Linux上傳檔案的幾種方式
在使用Linux系統伺服器時,我們經常使用命令來上傳檔案到遠端伺服器的指定地址。雖然目前有很多流行的工具,比如XShell、XFTP、WinSCP、CRT等等,可是實際中,我們並不是經常使用工具來上傳。主要是實際處理檔案時,需要使用程式碼來操作檔案,使用工具來上傳檔案不能準確的解決尋找問題,所以需要使用命令式上傳檔案。
下面是主要的操作命令本文記錄linux系統中檔案傳輸的多種方式,linux中檔案傳輸的方式有ftp,scp,rsync,rz,sz等
- ftp: ftp是檔案伺服器,可實現檔案的上傳下載,儲存等功能。
- scp: scp能夠將不同主機的檔案進行相互傳輸,使用簡單方便。
- rz : 用於linux與windows之間的檔案上傳
- sz : 用於linux與windows之間的檔案下載
- rsync : rsync是檔案同步工具,結合inotify可以實現檔案的同步,備份功能。
一、scp介紹
scp是securecopy的簡寫,用於在Linux下進行遠端拷貝檔案的命令,和它類似的命令有cp,不過cp只是在本機進行拷貝不能跨伺服器,而且scp傳輸是加密的,可能會稍微影響一下速度。當你伺服器硬碟變為只讀readonlysystem時,用scp可以幫你把檔案移出來。另外,scp還非常不佔資源,不會提高多少系統負荷,在這一點上,rsync就遠遠不及它了。雖然rsync比scp會快一點,但當小檔案眾多的情況下,rsync會導致硬碟I/O非常高,而scp基本不影響系統正常使用。scp在跨機器複製的時候為了提高資料的安全性,使用了ssh連線和加密方式,如果機器之間配置了ssh免密碼登入,那在使用scp的時候密碼都不用輸入。
1、scp的安裝:檔案傳輸的兩端機器都需要安裝
[root@yufu ~]# yum install openssh-clients -y
2、scp命令格式:
scp [引數] [本地主機檔案路徑] [遠端主機路徑]
引數選項:
-1 強制scp命令使用協議ssh1 -2 強制scp命令使用協議ssh2 -4 強制scp命令只使用IPv4定址 -6 強制scp命令只使用IPv6定址 -B 使用批處理模式(傳輸過程中不詢問傳輸口令或短語) -C 允許壓縮。(將-C標誌傳遞給ssh,從而開啟壓縮功能) -p 保留原檔案的修改時間,訪問時間和訪問許可權。 (建議使用,傳輸時保留屬性時間資訊,否則會導致時間發生改變無法進行增量傳輸)-q 不顯示傳輸進度條。 (很適合crontab任務計劃中使用) -r 遞迴複製整個目錄。 -v 詳細方式顯示輸出。scp和ssh(1)會顯示出整個過程的除錯資訊。這些資訊用於除錯連線,驗證和配置問題。 -c cipher 以cipher將資料傳輸進行加密,這個選項將直接傳遞給ssh。 -F ssh_config 指定一個替代的ssh配置檔案,此引數直接傳遞給ssh。 -i identity_file 從指定檔案中讀取傳輸時使用的金鑰檔案,此引數直接傳遞給ssh。 -l limit 限定使用者所能使用的頻寬,以Kbit/s為單位。 -o ssh_option 如果習慣於使用ssh_config(5)中的引數傳遞方式, -P port 注意是大寫的P, port是指定資料傳輸用到的埠號 -S program 指定加密傳輸時所使用的程式。此程式必須能夠理解ssh(1)的選項。
3、使用示例
scp的使用:將本地A主機檔案複製到B主機: A:192.168.214.190 B:192.168.214.187
[root@localhost tmp]#scp -p ./files/yum.log 192.168.214.187:/tmp/demo/ The authenticity of host '192.168.214.187 (192.168.214.187)' can't be established. RSA key fingerprint is SHA256:BwJdXsDA6F5976fKx1cSxkGJ9/uYYI4zVJ2rd+/Cvj0. RSA key fingerprint is MD5:85:87:8b:17:d2:79:c7:91:11:46:78:b3:4d:9d:dd:5a. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.214.187' (RSA) to the list of known hosts. [email protected]'s password: yum.log 100% 0 0.0KB/s 00:00
檢查B主機檔案:
[root@yufu demo]# ls f3.log yum.log [root@yufu demo]# ll 總用量 0 -rw-r--r--. 1 root root 0 3月 31 22:38 f3.log -rw-------. 1 root root 0 3月 31 22:36 yum.log
將遠端主機複製到本地
[root@localhost files]#scp -p 192.168.214.187:/tmp/demo/f3.log /tmp/files/ [email protected]'s password: f3.log 100% 0 0.0KB/s 00:00 [root@localhost files]#ls f3.log ff.txt yum.log
複製目錄
[root@localhost tmp]#scp -rp ./files/ 192.168.214.187:/tmp/demo [email protected]'s password: f3.log 100% 0 0.0KB/s 00:00 yum.log 100% 0 0.0KB/s 00:00 ff.txt 100% 5 7.3KB/s 00:00 [root@localhost tmp]#
檢查遠端主機目錄
[root@yufu demo]# tree . └── files ├── app ├── f3.log ├── ff.txt └── yum.log 2 directories, 3 files
二、rz sz (lrzsz)
rz sz指令可以實現linux和windows之間的檔案傳輸,但要求在windows客戶端要安裝Xshell或SecureCRT遠端連線工具。rz指令和sz指令是一對上傳與下載的指令。它們的軟體包名為lrzsz。rz sz指令使用很簡單,執行rz 指令,遠端連線工具會彈出windows檔案選擇視窗,只要選擇要上傳的檔案即可
工具的安裝:
yum install lrzsz -y
檔案上傳:
檔案下載:
三、rsync
rsync是可以實現增量備份的工具。配合任務計劃,rsync能實現定時或間隔同步,配合inotify或sersync,可以實現觸發式的實時同步。rsync可以實現scp的遠端拷貝,cp的本地拷貝、rm刪除和"ls -l"顯示檔案列表等功能。關於rsync的使用將單獨寫文章學習介紹。