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

一、簡述
linux

  一般,利用SSH管理遠程Linux服務器時,常常須要與本地交互文件。固然,咱們能夠利用FTP方式,好比經過Filezilla客戶端軟件。不過直接使用SSH軟件(SecureCRT、Xshell)自帶的上傳和下載功能無疑使最方便快捷的。一般SSH軟件支持的文件傳輸協議主要有ASCII、Xmodem、Zmodem等。
ios

  rz,sz是即是Linux/Unix同Windows進行ZModem文件傳輸的命令行工具。shell

使用前提: windows

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

  2. 其次,windows端須要支持ZModem的telnet/ssh客戶端(Xshell,SecureCRT支持,好像putty不支持),SecureCRT就能夠用SecureCRT登錄到Unix/Linux主機(telnet或ssh都可)服務器

  3. 運行命令rz,便是接收文件,xshell就會彈出文件選擇對話框,選好文件以後關閉對話框,文件就會上傳到linux裏的當前目錄。若是要上傳文件,直接用鼠標點住文件往X-shell裏面一拖便是session

  4. 運行命令 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。

wKioL1PnilTTH9F9AAJuA3pVrtA097.jpg

wKiom1PniTzQ1nNWAAHEyqLtFF0295.jpg


Xshell:

設置上傳和下載的默認目錄:

File -> Properties -> ZMODEM

wKioL1PnjQ-y0RR7AADUtYoANJ4284.jpg

wKiom1Pni_fS-2EKAAKi4aKC7m0124.jpg


七、操做演示(僅演示Xshell,其餘相似)

rz命令(下載)

  當咱們鍵入rz命令以後,會彈出文件選擇對話框,選擇須要傳輸的文件,點擊 Add 便可。

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

wKioL1PnjlqB8eQUAAG4wewQgVU396.jpg


今天又發現一個更簡單直接的方法,直接選中文件,用鼠標點住文件往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 的文件

wKioL1UKyJKjDkNOAACndf27HKY880.jpg

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

wKiom1UKyHXysgYaAAIOxLWhcPE802.jpg

相關文章
相關標籤/搜索