MAC使用RZ SZ指令实现本地与远程服务器之间文件上传与下载
一、rz sz概念
我們知道用linux命令rz/sz可以通過一些終端軟件如secureCRT等在linux服務(wù)器與本地windows之間傳文件。在服務(wù)器上rz一下,在本地windows下就跳出一個(gè)窗口,選擇文件后就傳到了服務(wù)器上;而在服務(wù)器上用sz命令sz一個(gè)文件,在本地電腦硬盤上就有了這個(gè)文件。用起來是很方便,但是總感覺很神奇。 關(guān)于其可能的工作原理,之前猜測(cè)過,感覺是這樣:用secureCRT等遠(yuǎn)程登錄的時(shí)候,其實(shí)就是通過ssh方式,連接了遠(yuǎn)程主機(jī)上的sshd,也就是相當(dāng)于用sshd-client 在于sshd 交互而已,而這個(gè)sshd-client就是secureCRT;這樣,sz/rz工作的時(shí)候,也只能是通過這條通路。具體怎樣通過這條通路傳的,大概是這樣:sz 一個(gè)文件的時(shí)候,就像是cat 一個(gè)文件一樣,本來應(yīng)該在本地窗口顯示出一堆亂碼,但是正巧這堆亂碼符合某種格式(就是zModem這種sz/rz所采用的協(xié)議格式),被secureCRT識(shí)破了,認(rèn)出了其實(shí)是sz命令發(fā)起的,于是保存成本地一個(gè)文件。換句話說,如果一個(gè)文件內(nèi)容正好是這樣的內(nèi)容,那么cat出后,在本地也必然會(huì)保存出一個(gè)文件的。對(duì)于rz呢,也是同樣的道理,rz 執(zhí)行后直接往標(biāo)準(zhǔn)輸出打印一些內(nèi)容,這些內(nèi)容格式古怪,正好被secureCRT所識(shí)別出來,然后彈窗,并把本地文件傳過去,就像是用戶的鍵入內(nèi)容一樣被rz命令接收。
rz可以批量上傳文件,也可以上傳單個(gè)文件。使用的協(xié)議是ZMODEM協(xié)議。 ZMODEM 協(xié)議的介紹 :https://blog.csdn.net/ligerendaqiu123/article/details/44964791。
下面簡(jiǎn)單說下ZModem協(xié)議的事情,先得從XMODEM協(xié)議(XMODEM Protocol)說起。XMODEM協(xié)議是一種使用撥號(hào)調(diào)制解調(diào)器的個(gè)人計(jì)算機(jī)通信中廣泛使用的異步文件運(yùn)輸協(xié)議。這種協(xié)議以128字節(jié)塊的形式傳輸數(shù) 據(jù),并且每個(gè)塊都使用一個(gè)校驗(yàn)和過程來進(jìn)行錯(cuò)誤檢測(cè)。如果接收方關(guān)于一個(gè)塊的校驗(yàn)和與它在發(fā)送方的校驗(yàn)和相同時(shí),接收方就向發(fā)送方發(fā)送一個(gè)認(rèn)可字節(jié)。然 而,這種對(duì)每個(gè)塊都進(jìn)行認(rèn)可的策略將導(dǎo)致低性能,特別是具有很長(zhǎng)傳播延遲的衛(wèi)星連接的情況時(shí),問題更加嚴(yán)重。
使用循環(huán)冗余校驗(yàn)的與XMODEM相應(yīng)的一種協(xié)議稱為XMODEM-CRC。還有一種是XMODEM-1K,它以1024字節(jié)一塊來傳輸數(shù)據(jù)。 YMODEM也是一種XMODEM的實(shí)現(xiàn)。它包括XMODEM-1K的所有特征,另外在一次單一會(huì)話期間為發(fā)送一組文件,增加了批處理文件傳輸模式。
ZMODEM是最有效的一個(gè)XMODEM版本,它不需要對(duì)每個(gè)塊都進(jìn)行認(rèn)可。事實(shí)上,它只是簡(jiǎn)單地要求對(duì)損壞的塊進(jìn)行重發(fā)。ZMODEM對(duì)按塊 收費(fèi)的分組交換網(wǎng)絡(luò)是非常有用的。不需要認(rèn)可回送分組在很大程度上減少了通信量。它是Xmodem 文件傳輸協(xié)議的一種增強(qiáng)形式,不僅能傳輸更大的數(shù)據(jù),而且錯(cuò)誤率更小。包含一種名為檢查點(diǎn)重啟的特性,如果通信鏈接在數(shù)據(jù)傳輸過程中中斷,能從斷點(diǎn)處而不 是從開始處恢復(fù)傳輸。
二、MAC 上使用rz、sz實(shí)現(xiàn)文件上傳下載
環(huán)境:
Mac ox 10.12.3
iTerm2-3_1_5
1、安裝iTerm2
建議去官網(wǎng)下載 http://www.iterm2.com/
也可以使用我提供的百度云鏈接 鏈接:http://pan.baidu.com/s/1geDTosj 密碼:3rm2
安裝方式和蘋果的安裝方式是一樣的,解壓雙擊 把他拖進(jìn)application中就可以了。
2、安裝rz sz
1.安裝homebrew
安裝成功后輸入 brew 查看是否有提示信息
MacBook-Pro:~ $ brew Example usage:brew search [TEXT|/REGEX/]brew (info|home|options) [FORMULA...]brew install FORMULA...brew updatebrew upgrade [FORMULA...]brew uninstall FORMULA...brew list [FORMULA...]Troubleshooting:brew configbrew doctorbrew install -vd FORMULADevelopers:brew create [URL [--no-fetch]]brew edit [FORMULA...]https://docs.brew.sh/Formula-Cookbook.htmlFurther help:man brewbrew help [COMMAND]brew home2、安裝lrzsz
brew install lrzsz3、配置rz sz 進(jìn)行上傳下載
進(jìn)入到/usr/local/bin 目錄下,在/usr/loal/bin 目錄下創(chuàng)建兩個(gè)文件
iterm2-recv-zmodem.sh
#!/bin/bash # Author: Matt Mastracci (matthew@mastracci.com) # AppleScript from http://stackoverflow.com/questions/4309087/cancel-button-on-osascript-in-a-bash-script # licensed under cc-wiki with attribution required # Remainder of script public domainosascript -e 'tell application "iTerm2" to version' > /dev/null 2>&1 && NAME=iTerm2 || NAME=iTerm if [[ $NAME = "iTerm" ]]; thenFILE=`osascript -e 'tell application "iTerm" to activate' -e 'tell application "iTerm" to set thefile to choose folder with prompt "Choose a folder to place received files in"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")"` elseFILE=`osascript -e 'tell application "iTerm2" to activate' -e 'tell application "iTerm2" to set thefile to choose folder with prompt "Choose a folder to place received files in"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")"` fiif [[ $FILE = "" ]]; thenecho Cancelled.# Send ZModem cancelecho -e \\x18\\x18\\x18\\x18\\x18sleep 1echoecho \# Cancelled transfer elsecd "$FILE"/usr/local/bin/rz -E -e -bsleep 1echoechoecho \# Sent \-\> $FILE fiiterm2-send-zmodem.sh
#!/bin/bash # Author: Matt Mastracci (matthew@mastracci.com) # AppleScript from http://stackoverflow.com/questions/4309087/cancel-button-on-osascript-in-a-bash-script # licensed under cc-wiki with attribution required # Remainder of script public domainosascript -e 'tell application "iTerm2" to version' > /dev/null 2>&1 && NAME=iTerm2 || NAME=iTerm if [[ $NAME = "iTerm" ]]; thenFILE=`osascript -e 'tell application "iTerm" to activate' -e 'tell application "iTerm" to set thefile to choose file with prompt "Choose a file to send"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")"` elseFILE=`osascript -e 'tell application "iTerm2" to activate' -e 'tell application "iTerm2" to set thefile to choose file with prompt "Choose a file to send"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")"` fi if [[ $FILE = "" ]]; thenecho Cancelled.# Send ZModem cancelecho -e \\x18\\x18\\x18\\x18\\x18sleep 1echoecho \# Cancelled transfer else/usr/local/bin/sz "$FILE" -e -bsleep 1echoecho \# Received $FILE fi3、iTerm2 配置添加rz sz 功能
1、點(diǎn)擊 iTerm2 的設(shè)置界面 Perference-> Profiles -> Default -> Advanced -> Triggers 的 Edit 按鈕
2、點(diǎn)擊+ 新增如下兩條記錄
Regular expression: rz waiting to receive.\*\*B0100 Action: Run Silent Coprocess Parameters: /usr/local/bin/iterm2-send-zmodem.shRegular expression: \*\*B00000000000000 Action: Run Silent Coprocess Parameters: /usr/local/bin/iterm2-recv-zmodem.shok!到此為止我們的rz sz安裝配置就可以了,接著我們介紹一下rz 和 sz 的使用
rz 上傳功能
在bash中,也就是iTerm2終端輸入rz 就會(huì)彈出文件選擇框,選擇文件 choose 就開始上傳,會(huì)上傳到當(dāng)前目錄
sz 下載功能
sz fileName(你要下載的文件的名字) 回車
會(huì)彈出窗體 我們選擇要保存的地方即可。
總結(jié)
以上是生活随笔為你收集整理的MAC使用RZ SZ指令实现本地与远程服务器之间文件上传与下载的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是SSID/ESSID/BSSID
- 下一篇: linux boot菜单列表,Boots