2021-05-12 14:32:11
Linux下通過SecureCRT的rz、sz和sftp實現檔案的上傳和下載
SecureCRT中有以下檔案傳輸協定:
① ASCII: 最快的傳輸協定, 但只能傳送文字檔案;
② Xmodem: 古老的傳輸協定, 速度較慢, 但使用了CRC錯誤偵測方法, 傳輸的準確率可高達99.6%;
③ Ymodem: 是Xmodem的改良版, 使用了1024位元區段傳送, 速度比Xmodem快;
④ Zmodem: Zmodem採用了串流式(streaming)傳輸方式, 傳輸速度較快, 而且還具有自動改變區段大小和斷點續傳、快速錯誤偵測等功能.
Zmodem是目前最流行的檔案傳輸協定, 下述的rz/sz命令就是通過Zmodem模式傳輸檔案.
1 通過rz/sz命令上傳/下載
1.1 安裝lrzsz軟體
[root@host-10-0-20-50 ~]# sudo yum install -y lrzsz
若伺服器不能連線外網, 可參照 CentOS 6.5中安裝使用dstat資源統計工具 中的設定.
1.2 rz - 上傳檔案
rz中的r是received(接收)的縮寫, 意為伺服器接收檔案(received by client), 即上傳本地檔案到伺服器.
鍵入rz命令, 然後回車, 將彈出檔案選擇對話方塊, 選擇需要上傳的檔案, 可選擇多個檔案.
點選確定後即可上傳檔案, 檔案接收路徑為當前執行rz命令的路徑.
過程如下:
[root@host-10-0-20-50 ~]# rz rz waiting to receive. Starting zmodem transfer. Press Ctrl+C to cancel.
注意: 上傳檔案時, 如果Linux伺服器接收檔案的目錄下有同名的檔案, 將跳過上傳過程. 資訊如下:
[root@host-10-0-20-50 elk]# rz rz waiting to receive. Starting zmodem transfer. Press Ctrl+C to cancel. Transferring elasticsearch-5.6.10.tar.gz... elasticsearch-5.6.10.tar.gz was skipped
擴充套件: 使用rz會有兩個問題: 上傳中斷、上傳檔案變化(md5不同). —— 尚未驗證, 請存疑.
解決辦法: 上傳時用rz -be, 並且不要勾選彈出的對話方塊中"Upload files as ASCII"前選框.
-b: 用binary的方式上傳下載, 不解釋字元為ASCII.
-e: 強制escape所有控制字元, 比如Ctrl+x, DEL等.
1.3 sz - 下載檔案
sz中的s是send(傳送)的縮寫, 意為伺服器傳送檔案到用戶端(send to client), 即下載伺服器檔案到本地.
鍵入sz download_files命令, 然後回車, 即可將伺服器中的檔案下載到SecureCRT設定的目錄下:
過程如下:
[root@host-10-0-20-50 ~]# cd /data/elk [root@host-10-0-20-50 ~]# sz elasticsearch-5.6.10.tar.gz
(1) sz的其他用法:
sz filename # 下載一個檔案 sz filename1 filename2 # 下載多個檔案 sz dir/* # 下載dir目錄下的所有檔案, 不包含dir下的資料夾
(2) 修改SecureCRT預設的上傳/下載目錄:
選擇選單欄的[Options(選項)] --> [Session Options(對談選項)] --> [X/Y/Zmodem], 然後修改Upload/Download路徑即可.
2 通過sftp上傳/下載檔案
為了資料和服務的安全, 很多生產環境中的Linux伺服器不能使用外網環境. 在只有SSH連線的情況下, 傳輸檔案變得很不方便.
如果Linux伺服器未安裝用於上傳和下載的lrzsz軟體, 又不能現場安裝, 此時可考慮使用sftp完成相關操作.
2.1 關於SFTP的簡介
SFTP是Secure File Transfer Protocol(安全檔案傳輸協定)的縮寫, 可以為傳輸檔案提供一種安全的網路的加密方法.
不需要單獨安裝或設定sftp —— 支援SSH連線的伺服器, 也就預設開啟了SFTP.
SFTP是SSH的一部分: 在SSH軟體包中, 已經包含了SFTP安全檔案資訊傳輸子系統.
SFTP本身沒有單獨的守護行程, 它必須使用sshd守護行程 (埠號預設是22) 來完成相應的連線和答復操作.
所以從某種意義上來說, SFTP並不像一個伺服器程式, 而更像是一個用戶端程式.
2.2 SFTP與FTP的區別
① FTP是一種方便資料共用的檔案傳輸協定, 包括一個FTP伺服器和多個FTP用戶端. FTP用戶端通過FTP協定從伺服器上下載資源.
② SFTP協定是在FTP的基礎上, 對資料採取了加密/解密技術, 使資料傳輸更安全.
③ SFTP的傳輸效率比FTP的低很多.
2.3 使用SFTP之前的工作
Windows系統下, 可以使用Core FTP、FileZilla、WinSCP、Xftp等軟體來連線SFTP進行上傳/下載檔案、建立/刪除目錄等操作.
這裡主要探討Linux系統下的操作.
(1) 軟體環境:
可以使用任意終端工具, 比如MacOS下的Terminal, 或iTerm(此處演示使用), 或SecureCRT.
(2) sftp建立連線:
在終端中進行操作, 若開啟SecureCRT的sftp: 選單欄的[File] --> [Connect SFTP Session]即可.
# 在預設的SSH埠(22)下連線: # sftp username@remote_ip(or remote host name), 連線root使用者, 則可省略"root@". sftp root@10.0.20.51 # 在其他埠下的連線 sftp -o port=1000 username@remote_ip
如果出現驗證, 填入正確的密碼後即可實現遠端連線. 連線成功後終端資訊如圖:
2.4 sftp - 上傳檔案
sftp與ftp有著幾乎相同的語法和功能:
① ls, rm, cd, mkdir, pwd 等指令是對當前連線的遠端端伺服器的操作;
② lls, lrm, lcd, lmkdir, lpwd 等指令是對本地端伺服器的操作 —— 在上述指令前加l(local)即可.
上傳操作範例:
# 預設連線的都是root目錄, 檢視本地和遠端/root路徑下的檔案: sftp> lls # 本地 anaconda-ks.cfg install.log install.log.syslog porc remote.sh test.sh sftp> ls # 遠端 anaconda-ks.cfg install.log install.log.syslog myid remote.sh test.sh # 將原生的remote.sh檔案上傳至遠端伺服器的/home路徑下: sftp> put remote.sh /home # 指定遠端接收路徑為/home Uploading remote.sh to /home/remote.sh remote.sh 100% 538 0.5KB/s 00:00 sftp> ls /home # 檢視遠端/home路徑下的檔案 /home/remote.sh
2.5 sftp - 下載檔案
下載操作範例:
# 將遠端/root路徑下的myid檔案下載至本地/home路徑下: sftp> get /root/myid /home # 指定遠端檔案 + 本地接收路徑 Fetching /root/myid to /home/myid sftp> lls /home # 檢視本地/home路徑下的檔案 myid
如果上傳/下載的是資料夾, 在put/get命令後加上-r引數即可.
上述操作截圖如下:
退出sftp:
在終端輸入quit或者exit, 然後回車, 就能退出sftp連線.
相關文章