日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MAC使用RZ SZ指令实现本地与远程服务器之间文件上传与下载

發布時間:2023/12/9 编程问答 91 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MAC使用RZ SZ指令实现本地与远程服务器之间文件上传与下载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、rz sz概念
我們知道用linux命令rz/sz可以通過一些終端軟件如secureCRT等在linux服務器與本地windows之間傳文件。在服務器上rz一下,在本地windows下就跳出一個窗口,選擇文件后就傳到了服務器上;而在服務器上用sz命令sz一個文件,在本地電腦硬盤上就有了這個文件。用起來是很方便,但是總感覺很神奇。 關于其可能的工作原理,之前猜測過,感覺是這樣:用secureCRT等遠程登錄的時候,其實就是通過ssh方式,連接了遠程主機上的sshd,也就是相當于用sshd-client 在于sshd 交互而已,而這個sshd-client就是secureCRT;這樣,sz/rz工作的時候,也只能是通過這條通路。具體怎樣通過這條通路傳的,大概是這樣:sz 一個文件的時候,就像是cat 一個文件一樣,本來應該在本地窗口顯示出一堆亂碼,但是正巧這堆亂碼符合某種格式(就是zModem這種sz/rz所采用的協議格式),被secureCRT識破了,認出了其實是sz命令發起的,于是保存成本地一個文件。換句話說,如果一個文件內容正好是這樣的內容,那么cat出后,在本地也必然會保存出一個文件的。對于rz呢,也是同樣的道理,rz 執行后直接往標準輸出打印一些內容,這些內容格式古怪,正好被secureCRT所識別出來,然后彈窗,并把本地文件傳過去,就像是用戶的鍵入內容一樣被rz命令接收。

rz可以批量上傳文件,也可以上傳單個文件。使用的協議是ZMODEM協議。 ZMODEM 協議的介紹 :https://blog.csdn.net/ligerendaqiu123/article/details/44964791。
下面簡單說下ZModem協議的事情,先得從XMODEM協議(XMODEM Protocol)說起。XMODEM協議是一種使用撥號調制解調器的個人計算機通信中廣泛使用的異步文件運輸協議。這種協議以128字節塊的形式傳輸數 據,并且每個塊都使用一個校驗和過程來進行錯誤檢測。如果接收方關于一個塊的校驗和與它在發送方的校驗和相同時,接收方就向發送方發送一個認可字節。然 而,這種對每個塊都進行認可的策略將導致低性能,特別是具有很長傳播延遲的衛星連接的情況時,問題更加嚴重。  
使用循環冗余校驗的與XMODEM相應的一種協議稱為XMODEM-CRC。還有一種是XMODEM-1K,它以1024字節一塊來傳輸數據。 YMODEM也是一種XMODEM的實現。它包括XMODEM-1K的所有特征,另外在一次單一會話期間為發送一組文件,增加了批處理文件傳輸模式。  
ZMODEM是最有效的一個XMODEM版本,它不需要對每個塊都進行認可。事實上,它只是簡單地要求對損壞的塊進行重發。ZMODEM對按塊 收費的分組交換網絡是非常有用的。不需要認可回送分組在很大程度上減少了通信量。它是Xmodem 文件傳輸協議的一種增強形式,不僅能傳輸更大的數據,而且錯誤率更小。包含一種名為檢查點重啟的特性,如果通信鏈接在數據傳輸過程中中斷,能從斷點處而不 是從開始處恢復傳輸。

二、MAC 上使用rz、sz實現文件上傳下載

環境:
Mac ox 10.12.3
iTerm2-3_1_5

1、安裝iTerm2
建議去官網下載 http://www.iterm2.com/
也可以使用我提供的百度云鏈接 鏈接:http://pan.baidu.com/s/1geDTosj 密碼:3rm2
安裝方式和蘋果的安裝方式是一樣的,解壓雙擊 把他拖進application中就可以了。

2、安裝rz sz
1.安裝homebrew

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安裝成功后輸入 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 home

2、安裝lrzsz

brew install lrzsz

3、配置rz sz 進行上傳下載
進入到/usr/local/bin 目錄下,在/usr/loal/bin 目錄下創建兩個文件

cd /usr/local/bin vi iterm2-recv-zmodem.sh 【內容如下】 vi iterm2-send-zmodem.sh 【內容如下】 chmod 777 iterm2-*

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 fi

iterm2-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 fi

3、iTerm2 配置添加rz sz 功能
1、點擊 iTerm2 的設置界面 Perference-> Profiles -> Default -> Advanced -> Triggers 的 Edit 按鈕

2、點擊+ 新增如下兩條記錄

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.sh

ok!到此為止我們的rz sz安裝配置就可以了,接著我們介紹一下rz 和 sz 的使用
rz 上傳功能
在bash中,也就是iTerm2終端輸入rz 就會彈出文件選擇框,選擇文件 choose 就開始上傳,會上傳到當前目錄
sz 下載功能
sz fileName(你要下載的文件的名字) 回車
會彈出窗體 我們選擇要保存的地方即可。

總結

以上是生活随笔為你收集整理的MAC使用RZ SZ指令实现本地与远程服务器之间文件上传与下载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。