1、簡(jiǎn)述
通常,利用SSH管理遠程Linux服務(wù)器時(shí),經(jīng)常需要與本地交互文件。當然,我們可以利用FTP方式,比如通過(guò)Filezilla客戶(hù)端軟件。不過(guò)直接使用SSH軟件(SecureCRT、Xshell)自帶的上傳和下載功能無(wú)疑使最方便快捷的。通常SSH軟件支持的文件傳輸協(xié)議主要有ASCII、Xmodem、Zmodem等。
rz,sz是便是Linux/Unix同Windows進(jìn)行ZModem文件傳輸的命令行工具。
使用前提:
首先,你的Linux端(CentOS, Ubuntu)需要安裝rz/sz命令,也就是 lszrz 包。
其次,windows端需要支持ZModem的telnet/ssh客戶(hù)端(Xshell,SecureCRT支持,好像putty不支持),SecureCRT就可以用SecureCRT登陸到Unix/Linux主機(telnet或ssh均可)
運行命令rz,即是接收文件,xshell就會(huì )彈出文件選擇對話(huà)框,選好文件之后關(guān)閉對話(huà)框,文件就會(huì )上傳到linux里的當前目錄。如果要上傳文件,直接用鼠標點(diǎn)住文件往X-shell里面一拖即是
運行命令 sz file 就是發(fā)文件到windows上(保存的目錄是可以配置) 比f(wàn)tp命令方便多了,而且服務(wù)器不用再開(kāi)FTP服務(wù)了
2、文件傳輸協(xié)議
文件傳輸是數據交換的主要形式。在進(jìn)行文件傳輸時(shí),為使文件能被正確識別和傳送,我們需要在兩臺計算機之間建立統一的傳輸協(xié)議。這個(gè)協(xié)議包括了文件的識別、傳送的起止時(shí)間、錯誤的判斷與糾正等內容。常見(jiàn)的傳輸協(xié)議有以下幾種:
ASCII:這是最快的傳輸協(xié)議,但只能傳送文本文件。
Xmodem:這種古老的傳輸協(xié)議速度較慢,但由于使用了CRC錯誤偵測方法,傳輸的準確率可高達99.6%。
Ymodem:這是Xmodem的改良版,使用了1024位區段傳送,速度比Xmodem要快
Zmodem:Zmodem采用了串流式(streaming)傳輸方式,傳輸速度較快,而且還具有自動(dòng)改變區段大小和斷點(diǎn)續傳、快速錯誤偵測等功能。這是目前最流行的文件傳輸協(xié)議。
3、在Linux上安裝lrzsz
單單是SSH客戶(hù)端軟件支持以上文件傳輸協(xié)議(ASCII,Xmodem,Ymodem,Zmodem)還不行,我們的Linux服務(wù)器上也得安裝相應的軟件,以支持這些文件傳輸協(xié)議才行。在Linux上,lrzsz就是完成此任務(wù)的,lrzsz就是一個(gè)支持 Zmodem 傳輸協(xié)議的工具。我們通過(guò)sz/rz兩個(gè)命令,分別發(fā)送/接收文件。如果我們的系統中沒(méi)有安裝lrzsz這個(gè)包,就會(huì )報錯,安裝即可解決。
1 2 3 4 5 6 7 | [root@localhost ~]# rz-bash: rz: command not found## For CentOS/RHEL[root@localhost ~]# yum -y install lrzsz## For Ubuntu# sudo apt-get install lrzsz |
4、理解記憶
其中,對于sz和rz的理解與記憶我用了如下的方法(很多時(shí)候容易搞混):
sz中的s意為send(發(fā)送),告訴客戶(hù)端,我(服務(wù)器)要發(fā)送文件 send to cilent,就等同于客戶(hù)端在下載。
rz中的r意為received(接收),告訴客戶(hù)端,我(服務(wù)器)要接收文件 received by cilent,就等同于客戶(hù)端在上傳。
記住一點(diǎn),不論是send還是received,動(dòng)作都是在服務(wù)器上發(fā)起的。我們習慣了說(shuō)上傳或是下載,其實(shí)大可不必。使用這兩個(gè)命令,只要思考一點(diǎn),是要把文件從服務(wù)器上發(fā)送出去,還是從客戶(hù)端接收回來(lái),就可以了。
好吧,最后總結為一句話(huà):
我(客戶(hù)端)上傳,你(服務(wù)器)接收(RZ),我下載(客戶(hù)端),你(服務(wù)器)發(fā)送(SZ)。
5、簡(jiǎn)單用法
sz用法:發(fā)送出去
1 2 3 4 5 6 | ### 下載一個(gè)文件: # sz filename ### 下載多個(gè)文件: # sz filename1 filename2### 下載dir目錄下的所有文件,不包含dir下的文件夾: # sz dir/* |
rz用法:接收回來(lái)
1 2 3 4 | ### 直接鍵入rz命令即可# rz### 直接拖動(dòng)文件到 xshell, 或者 SecureCRT 窗口即可 |
輸入rz回車(chē)后,會(huì )出現文件選擇對話(huà)框,選擇需要上傳文件,一次可以指定多個(gè)文件,上傳到服務(wù)器的路徑為當前執行rz命令的目錄。
6、設置默認路徑
SecureCRT:
設置上傳和下載的默認目錄:
英文版: options ― session options ― X/Y/Zmodem。
中文版: 選項― 會(huì )話(huà)選項― X/Y/Zmodem。
Xshell:
設置上傳和下載的默認目錄:
File -> Properties -> ZMODEM
7、操作演示(僅演示Xshell,其他類(lèi)似)
rz命令(下載)
當我們鍵入rz命令之后,會(huì )彈出文件選擇對話(huà)框,選擇需要傳輸的文件,點(diǎn)擊 Add 即可。
接收的目錄就是我們當前執行rz命令的目錄。
今天又發(fā)現一個(gè)更簡(jiǎn)單直接的方法,直接選中文件,用鼠標點(diǎn)住文件往Xshell里面一拖就可以了。
sz命令(上傳)
假設我要發(fā)送文件,直接使用sz命令, 其后接上文件名即可。同理,敲下回車(chē)后,也會(huì )彈出對話(huà)框,讓我們選擇接收的文件夾。
1 | [root@localhost ~]# sz nagios-4.0.7.tar.gz nagios-plugins-2.0.3.tar.gz |
8、問(wèn)題
xshell或者SecureCRT 啟動(dòng) tmux或screen之后,sz, rz 命令都無(wú)法彈出正常的文件選擇窗口,該如何解決?
看起來(lái) tmux 下不支持 zmodem,所以這兩個(gè)命令也用不了。
鏈接: http://sourceforge.net/p/tmux/tickets/6/
如果換用 screen 的話(huà)應該是可以使用 sz/rz 的,很早之前我曾在 Windows 的 SecureCRT 上面成功使用過(guò)。
需要在 .screenrc 里面設置 zmodem catch,也許還需要 rz -e。細節記得不是很清楚了。
9、缺點(diǎn)
使用lszrz非常方便,但是有一點(diǎn)不足之處: 無(wú)法傳輸大于 4G 的文件。
那腫么辦呢? 可以使用Filezilla, SecureFX 這些FTP工具來(lái)替代了。
聯(lián)系客服