1. 程式人生 > >Linux基礎:利用SSH上傳、下載(使用sz與rz命令)

Linux基礎:利用SSH上傳、下載(使用sz與rz命令)

1、簡述

  通常,利用SSH管理遠端Linux伺服器時,經常需要與本地互動檔案。當然,我們可以利用FTP方式,比如通過Filezilla客戶端軟體。不過直接使用SSH軟體(SecureCRT、Xshell)自帶的上傳和下載功能無疑使最方便快捷的。通常SSH軟體支援的檔案傳輸協議主要有ASCII、Xmodem、Zmodem等。

  rz,sz是便是Linux/Unix同Windows進行ZModem檔案傳輸的命令列工具。

使用前提: 

  1. 首先,你的Linux端(CentOS, Ubuntu)需要安裝rz/sz命令,也就是 lszrz 包。

  2. 其次,windows端需要支援ZModem的telnet/ssh客戶端(Xshell,SecureCRT支援,好像putty不支援),SecureCRT就可以用SecureCRT登陸到Unix/Linux主機(telnet或ssh均可)

  3. 執行命令rz,即是接收檔案,xshell就會彈出檔案選擇對話方塊,選好檔案之後關閉對話方塊,檔案就會上傳到linux裡的當前目錄。如果要上傳檔案,直接用滑鼠點住檔案往X-shell裡面一拖即是

  4. 執行命令 sz file 就是發文件到windows上(儲存的目錄是可以配置) 比ftp命令方便多了,而且伺服器不用再開FTP服務了

2、檔案傳輸協議

  檔案傳輸是資料交換的主要形式。在進行檔案傳輸時,為使檔案能被正確識別和傳送,我們需要在兩臺計算機之間建立統一的傳輸協議。這個協議包括了檔案的識別、傳送的起止時間、錯誤的判斷與糾正等內容。常見的傳輸協議有以下幾種:

  • ASCII:這是最快的傳輸協議,但只能傳送文字檔案。 

  • Xmodem:這種古老的傳輸協議速度較慢,但由於使用了CRC錯誤偵測方法,傳輸的準確率可高達99.6%。 

  • Ymodem:這是Xmodem的改良版,使用了1024位區段傳送,速度比Xmodem要快

  • Zmodem:Zmodem採用了串流式(streaming)傳輸方式,傳輸速度較快,而且還具有自動改變區段大小和斷點續傳、快速錯誤偵測等功能。這是目前最流行的檔案傳輸協議。 

3、在Linux上安裝lrzsz

  單單是SSH客戶端軟體支援以上檔案傳輸協議(ASCII,Xmodem,Ymodem,Zmodem)還不行,我們的Linux伺服器上也得安裝相應的軟體,以支援這些檔案傳輸協議才行。在Linux上,lrzsz就是完成此任務的,lrzsz就是一個支援 Zmodem

 傳輸協議的工具。我們通過sz/rz兩個命令,分別傳送/接收檔案。如果我們的系統中沒有安裝lrzsz這個包,就會報錯,安裝即可解決。

1 2 3 4 5 6 7 [[email protected] ~]# rz -bash: rz: command not found ## For CentOS/RHEL [[email protected] ~]# yum -y install lrzsz ## For Ubuntu # sudo apt-get install lrzsz

4、理解記憶

  其中,對於sz和rz的理解與記憶我用瞭如下的方法(很多時候容易搞混):

  • sz中的s意為send(傳送),告訴客戶端,我(伺服器)要傳送檔案 send to cilent,就等同於客戶端在下載。

  • rz中的r意為received(接收),告訴客戶端,我(伺服器)要接收檔案 received by cilent,就等同於客戶端在上傳。

  記住一點,不論是send還是received,動作都是在伺服器上發起的。我們習慣了說上傳或是下載,其實大可不必。使用這兩個命令,只要思考一點,是要把檔案從伺服器上傳送出去,還是從客戶端接收回來,就可以了。

好吧,最後總結為一句話:

    我(客戶端)上傳,你(伺服器)接收(RZ),我下載(客戶端),你(伺服器)傳送(SZ)。

5、簡單用法

  • sz用法:傳送出去

1 2 3 4 5 6 ### 下載一個檔案:  # sz filename  ### 下載多個檔案:  # sz filename1 filename2 ### 下載dir目錄下的所有檔案,不包含dir下的資料夾:  # sz dir/*
  • rz用法:接收回來

1 2 3 4 ### 直接鍵入rz命令即可 # rz ### 直接拖動檔案到 xshell, 或者 SecureCRT 視窗即可

  輸入rz回車後,會出現檔案選擇對話方塊,選擇需要上傳檔案,一次可以指定多個檔案,上傳到伺服器的路徑為當前執行rz命令的目錄

6、設定預設路徑

SecureCRT:

設定上傳和下載的預設目錄:

英文版: options — session options — X/Y/Zmodem。

中文版: 選項— 會話選項— X/Y/Zmodem。

wKioL1PnilTTH9F9AAJuA3pVrtA097.jpg

wKiom1PniTzQ1nNWAAHEyqLtFF0295.jpg

Xshell:

設定上傳和下載的預設目錄:

File -> Properties -> ZMODEM

wKioL1PnjQ-y0RR7AADUtYoANJ4284.jpg

wKiom1Pni_fS-2EKAAKi4aKC7m0124.jpg

7、操作演示(僅演示Xshell,其他類似)

rz命令(下載)

  當我們鍵入rz命令之後,會彈出檔案選擇對話方塊,選擇需要傳輸的檔案,點選 Add 即可。

接收的目錄就是我們當前執行rz命令的目錄

wKioL1PnjlqB8eQUAAG4wewQgVU396.jpg

今天又發現一個更簡單直接的方法,直接選中檔案,用滑鼠點住檔案往Xshell裡面一拖就可以了。

sz命令(上傳)

  假設我要傳送檔案,直接使用sz命令, 其後接上檔名即可。同理,敲下回車後,也會彈出對話方塊,讓我們選擇接收的資料夾。

1 [[email protected] ~]# sz nagios-4.0.7.tar.gz  nagios-plugins-2.0.3.tar.gz

8、問題

xshell或者SecureCRT 啟動 tmux或screen之後,sz, rz 命令都無法彈出正常的檔案選擇視窗,該如何解決?

看起來 tmux 下不支援 zmodem,所以這兩個命令也用不了。

如果換用 screen 的話應該是可以使用 sz/rz 的,很早之前我曾在 Windows 的 SecureCRT 上面成功使用過。

需要在 .screenrc 裡面設定 zmodem catch,也許還需要 rz -e。細節記得不是很清楚了。

9、缺點

  使用lszrz非常方便,但是有一點不足之處: 無法傳輸大於 4G 的檔案

wKioL1UKyJKjDkNOAACndf27HKY880.jpg

那腫麼辦呢? 可以使用Filezilla, SecureFX 這些FTP工具來替代了。

wKiom1UKyHXysgYaAAIOxLWhcPE802.jpg

from: http://skypegnu1.blog.51cto.com/8991766/1538371