Linux上傳下載神器之 lrzsz


在開發的過程中,經常遇到 需要在 Linux 和 Windows 之間上傳下載文件的情況

這時,一般都是使用 FTP 或者 WinSCP 工具進行上傳下載, 雖然也能解決問題,但是這些工具需要在本地安裝客戶端並進行配置之後才能使用

這裡介紹一款工具,它能秒級安裝,安裝即用,不需要任何的配置,就能方便快捷的在 Linux 和 Windows 之間傳輸文件

它就是Linux中上傳下載的工具 lrzsz ,這個工具使用了 XMODEM、YMODEM 和 ZMODEM 文件傳輸協議來實現文件的上傳和下載的,目前主流的SSH連接工具 ( SecureCRT、XShell 等 ) 都支援這些協議

安裝

在使用 lrzsz 之前需要先在Linux下安裝,它 大小只有幾百KB, 安裝是非常方便的, 基本秒級完成, 通過下面的命令就可以安裝

yum install -y lrzsz

安裝完成之後,輸入 sz --v 或者 rz --v 命令,如果有如下輸出,則表示安裝成功

[root@ecs-centos-7 ~]# sz --v
sz (lrzsz) 0.12.20
[root@ecs-centos-7 ~]# rz --v
rz (lrzsz) 0.12.20

設置上傳下載目錄

在使用rz/sz 命令之前,需要先在 SSH工具的設置上傳下載目錄,下面以 SecureCRT 為例來說明下

在 SecureCRT 中打開一個SSH會話後, 打開會話選項窗口,選擇 終端 -> 外觀 -> X/Y/Zmodem , 然後就可以設置上傳和下載目錄了, 如下圖所示

  • 上傳目錄

當在 Linux 上執行 rz 命令之後,彈出選擇發送文件窗口時,默認選擇文件的目錄就是上面設置的上傳目錄

  • 下載目錄

在 Linux 上執行 sz a.txt 命令之後,Linux 上的文件a.txt默認的本地下載目錄就是上面設置的下載目錄

關於X/Y/Zmodem

  • Xmodem

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

  • Ymodem

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

  • Zmodem

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

上面幾種傳輸協議,目前Zmodem 是使用得最多的,下面介紹的 rz/sz 命令就是使用該傳輸協議的,命令中的 z 表示使用 Zmodem協議

將Win上文件上傳到Linux

在Linux終端中輸入 rz + 回車 ,在彈出的對話框中選擇要上傳的文件,點擊添加,再確認,本地的文件就會上傳到終端當前所在的目錄中,上傳的文件名默認和本地的文件名一致

rz 支援一次上傳多個文件,只要選擇需要上傳文件的時候選擇多個文件即可

另外,rz上傳命令,如果Linux終端當前目錄已經存在同名文件了,那麼默認不會執行上傳,要 -y 覆蓋才可以

將Linux文件下載到Win上

把當前目錄下的 a.txt 下載到本地

[root@ecs-centos-7 tmp]# ls
a.txt
[root@ecs-centos-7 tmp]# sz a.txt 
 zmodem trl+C ȡ

  100%      28 bytes   28 bytes/s 00:00:01       0 Errors

[root@ecs-centos-7 tmp]# 

執行 sz a.txt 命令默認把 a.txt 下載到本地,下載到本地哪個目錄中,是在SSH連接工具中配置的,下載到本地的文件默認和命令中使用相同的文件名

下載進度、下載速度、用時、錯誤數會實時顯示在 Linux的終端會話上

sz 也支援一次下載多個文件到本地

[root@ecs-centos-7 tmp]# ls
a.txt  b.txt
[root@ecs-centos-7 tmp]# sz a.txt b.txt 
 zmodem trl+C ȡ

  100%      28 bytes   28 bytes/s 00:00:01       0 Errors
  100%      11 bytes   11 bytes/s 00:00:01       0 Errors

[root@ecs-centos-7 tmp]# sz *.txt
 zmodem trl+C ȡ

  100%      28 bytes   28 bytes/s 00:00:01       0 Errors
  100%      11 bytes   11 bytes/s 00:00:01       0 Errors

[root@ecs-centos-7 tmp]# 

上面的例子中,Linux終端當前目錄下有 a.txt 、b.txt 兩個文件,執行 sz a.txt b.txt 或者 sz *.txt 命令都可以實現批量下載文件到本地

注意

使用 rz/sz 有幾點需要注意的地方

  • Linux 上啟動了 tmux 之後,無法使用 rz/sz 命令,這是由於 tmux 不支援Zmodem 協議,如果想要使用 rz/sz 的話只能先退出 tmux, 關於 tmux 可以參考 再也不用擔心 SSH 斷開了 – tmux 命令

  • rz/sz 不支援超過4G的文件,上傳下載4G及以上大小的文件只能由 FTP 或者 WinScp 等工具來解決了

小結

本文介紹了文件上傳下載的工具 lrzsz,它體積小,使用起來方便快捷,學會使用它,會顯著的提高日常工作效率

Tags: