1. 程式人生 > 實用技巧 >Linux上傳檔案的幾種方式

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的使用將單獨寫文章學習介紹。