一、簡述
linux
一般,利用SSH管理遠程Linux服務器時,常常須要與本地交互文件。固然,咱們能夠利用FTP方式,好比經過Filezilla客戶端軟件。不過直接使用SSH軟件(SecureCRT、Xshell)自帶的上傳和下載功能無疑使最方便快捷的。一般SSH軟件支持的文件傳輸協議主要有ASCII、Xmodem、Zmodem等。
ios
rz,sz是即是Linux/Unix同Windows進行ZModem文件傳輸的命令行工具。shell
使用前提: windows
首先,你的Linux端(CentOS, Ubuntu)須要安裝rz/sz命令,也就是 lszrz 包。bash
其次,windows端須要支持ZModem的telnet/ssh客戶端(Xshell,SecureCRT支持,好像putty不支持),SecureCRT就能夠用SecureCRT登錄到Unix/Linux主機(telnet或ssh都可)服務器
運行命令rz,便是接收文件,xshell就會彈出文件選擇對話框,選好文件以後關閉對話框,文件就會上傳到linux裏的當前目錄。若是要上傳文件,直接用鼠標點住文件往X-shell裏面一拖便是session
運行命令 sz file 就是發文件到windows上(保存的目錄是能夠配置) 比ftp命令方便多了,並且服務器不用再開FTP服務了ssh
二、文件傳輸協議ide
文件傳輸是數據交換的主要形式。在進行文件傳輸時,爲使文件能被正確識別和傳送,咱們須要在兩臺計算機之間創建統一的傳輸協議。這個協議包括了文件的識別、傳送的起止時間、錯誤的判斷與糾正等內容。常見的傳輸協議有如下幾種:工具
ASCII:這是最快的傳輸協議,但只能傳送文本文件。
Xmodem:這種古老的傳輸協議速度較慢,但因爲使用了CRC錯誤偵測方法,傳輸的準確率可高達99.6%。
Ymodem:這是Xmodem的改良版,使用了1024位區段傳送,速度比Xmodem要快
Zmodem:Zmodem採用了串流式(streaming)傳輸方式,傳輸速度較快,並且還具備自動改變區段大小和斷點續傳、快速錯誤偵測等功能。這是目前最流行的文件傳輸協議。
三、在Linux上安裝lrzsz
單單是SSH客戶端軟件支持以上文件傳輸協議(ASCII,Xmodem,Ymodem,Zmodem)還不行,咱們的Linux服務器上也得安裝相應的軟件,以支持這些文件傳輸協議才行。在Linux上,lrzsz就是完成此任務的,lrzsz就是一個支持 Zmodem 傳輸協議的工具。咱們經過sz/rz兩個命令,分別發送/接收文件。若是咱們的系統中沒有安裝lrzsz這個包,就會報錯,安裝便可解決。
[root@localhost ~]# rz -bash: rz: command not found ## For CentOS/RHEL [root@localhost ~]# yum -y install lrzsz ## For Ubuntu # sudo apt-get install lrzsz
四、理解記憶
其中,對於sz和rz的理解與記憶我用了以下的方法(不少時候容易搞混):
sz中的s意爲send(發送),告訴客戶端,我(服務器)要發送文件 send to cilent,就等同於客戶端在下載。
rz中的r意爲received(接收),告訴客戶端,我(服務器)要接收文件 received by cilent,就等同於客戶端在上傳。
記住一點,不管是send仍是received,動做都是在服務器上發起的。咱們習慣了說上傳或是下載,其實大可沒必要。使用這兩個命令,只要思考一點,是要把文件從服務器上發送出去,仍是從客戶端接收回來,就能夠了。
好吧,最後總結爲一句話:
我(客戶端)上傳,你(服務器)接收(RZ),我下載(客戶端),你(服務器)發送(SZ)。
五、簡單用法
sz用法:發送出去
### 下載一個文件: # sz filename ### 下載多個文件: # sz filename1 filename2 ### 下載dir目錄下的全部文件,不包含dir下的文件夾: # sz dir/*
rz用法:接收回來
### 直接鍵入rz命令便可 # rz ### 直接拖動文件到 xshell, 或者 SecureCRT 窗口便可
輸入rz回車後,會出現文件選擇對話框,選擇須要上傳文件,一次能夠指定多個文件,上傳到服務器的路徑爲當前執行rz命令的目錄。
六、設置默認路徑
SecureCRT:
設置上傳和下載的默認目錄:
英文版: options — session options — X/Y/Zmodem。
中文版: 選項— 會話選項— X/Y/Zmodem。
Xshell:
設置上傳和下載的默認目錄:
File -> Properties -> ZMODEM
七、操做演示(僅演示Xshell,其餘相似)
rz命令(下載)
當咱們鍵入rz命令以後,會彈出文件選擇對話框,選擇須要傳輸的文件,點擊 Add 便可。
接收的目錄就是咱們當前執行rz命令的目錄。
今天又發現一個更簡單直接的方法,直接選中文件,用鼠標點住文件往Xshell裏面一拖就能夠了。
sz命令(上傳)
假設我要發送文件,直接使用sz命令, 其後接上文件名便可。同理,敲下回車後,也會彈出對話框,讓咱們選擇接收的文件夾。
[root@localhost ~]# sz nagios-4.0.7.tar.gz nagios-plugins-2.0.3.tar.gz
八、問題
xshell或者SecureCRT 啓動 tmux或screen以後,sz, rz 命令都沒法彈出正常的文件選擇窗口,該如何解決?
看起來 tmux
下不支持 zmodem
,因此這兩個命令也用不了。
連接: http://sourceforge.net/p/tmux/tickets/6/
若是換用 screen
的話應該是可使用 sz/rz 的,很早以前我曾在 Windows 的 SecureCRT 上面成功使用過。
須要在 .screenrc
裏面設置 zmodem catch
,也許還須要 rz -e
。細節記得不是很清楚了。
九、缺點
使用lszrz很是方便,可是有一點不足之處: 沒法傳輸大於 4G 的文件。
那腫麼辦呢? 可使用Filezilla, SecureFX 這些FTP工具來替代了。