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