我們都使用過 scp 來傳輸文件。當傳輸在中途或甚至在 99% 時被中斷時,我們都會詛咒不已(每當我想起99%的中斷傳輸時,我的心都很痛);讓我們看看如何使用 rsync 來替代 scp,避免這樣的不幸。
什么是rsync?
Rsync 是一個快速且極其靈活的文件復制工具。它可以在本地進行復制,通過任何遠程 shell 與另一個主機進行復制,或者通過遠程 rsync 守護進程進行復制。它提供許多選項,可以控制其行為的各個方面,并允許對要復制的文件集進行非常靈活的指定。它以增量傳輸算法而聞名,該算法通過僅發送源文件與目標文件中現有文件之間的差異來減少通過網絡發送的數據量。Rsync 廣泛用于備份和鏡像,作為日常使用的改進復制命令。
Rsync 使用”快速檢查”算法(默認情況下)來查找需要傳輸的文件,該算法查找大小或最后修改時間發生變化的文件。當快速檢查指示文件的數據不需要更新時,對目標文件直接進行其他保留屬性的更改(如選項請求的那樣)。
可用rsync的平臺
Rsync 適用于任何類 UNIX 平臺,如 linux 和 macOS,也許也有一些針對 windows 的 rsync 衍生版,但我沒有使用過,所以不知道是否存在我們現在討論的所有功能!
如何安裝rsync
在 Ubuntu 和 Debian 衍生版中使用 apt 命令進行安裝:
linuxmi@linuxmi ~/www.linuxmi.com
% sudo apt install rsync
在類似 RedHat 和 centos 的 RPM 系統中,請使用 yum 命令安裝 rsync:
linuxmi@linuxmi ~/www.linuxmi.com
% sudo yum install rsync
在 Mac 上,請使用 brew 命令安裝 rsync:
linuxmi@linuxmi ~/www.linuxmi.com
% brew install rsync
您可以通過檢查其版本來驗證是否安裝了rsync:
linuxmi@linuxmi ~/www.linuxmi.com
% rsync --version
如何使用rsync?
要將文件從本地主機復制到遠程主機類似于scp,但有更多參數(如果您無法記住參數,別忘了 bash 別名是您最佳選擇):
rsync -partial -z -e 'ssh -p 22' linuxmi.cpp linuxmi@192.168.174.132:/home/linuxmi
- linuxmi.cpp是源文件。
- linuxmi@192.168.174.132:/home/linuxmi 是用于連接的用戶、遠程主機和路徑。
- -e ‘ssh -p’ 告訴rsync使用端口22的ssh連接。
- -z 進行壓縮數據傳輸以加快速度。
- -partial 這是一個“黃金”參數,允許我們恢復中斷的傳輸。默認情況下,如果傳輸中斷,rsync將刪除任何部分傳輸的文件。在某些情況下,更希望保留部分傳輸的文件。使用–partial選項告訴rsync保留部分文件,這應該使隨后傳輸剩余文件更快。
如何恢復中斷的傳輸?
如果您在之前的段落中使用了 -partial 參數來啟動傳輸,并且由于某種原因傳輸中斷,您可以重新輸入命令,哇!就像魔術一樣!傳輸會從中斷的點開始!不再在屏幕前咒罵!