如何使用 rsync 通過 SSH 恢復部分傳輸的文件
由於諸如電源故障、網路故障或用戶干預等各種原因,使用 scp
命令通過 SSH 複製的大型文件可能會中斷、取消或損壞。有一天,我將 Ubuntu 16.04 ISO 文件複製到我的遠程系統。不幸的是斷電了,網路連接立即斷了。結果么?複製過程終止!這只是一個簡單的例子。Ubuntu ISO 並不是那麼大,一旦電源恢復,我就可以重新啟動複製過程。但在生產環境中,當你在傳輸大型文件時,你可能並不希望這樣做。
而且,你不能繼續使用 scp
命令恢復被中止的進度。因為,如果你這樣做,它只會覆蓋現有的文件。這時你會怎麼做?別擔心!這是 rsync
派上用場的地方!rsync
可以幫助你恢復中斷的複製或下載過程。對於那些好奇的人,rsync
是一個快速、多功能的文件複製程序,可用於複製和傳輸遠程和本地系統中的文件或文件夾。
它提供了大量控制其各種行為的選項,並允許非常靈活地指定要複製的一組文件。它以增量傳輸演算法而聞名,它通過僅發送源文件和目標中現有文件之間的差異來減少通過網路發送的數據量。 rsync
廣泛用於備份和鏡像,以及日常使用中改進的複製命令。
就像 scp
一樣,rsync
也會通過 SSH 複製文件。如果你想通過 SSH 下載或傳輸大文件和文件夾,我建議您使用 rsync
。請注意,應該在兩邊(遠程和本地系統)都安裝 rsync
來恢復部分傳輸的文件。
使用 rsync 恢復部分傳輸的文件
好吧,讓我給你看一個例子。我將使用命令將 Ubuntu 16.04 ISO 從本地系統複製到遠程系統:
$ scp Soft_Backup/OS Images/Linux/ubuntu-16.04-desktop-amd64.iso sk@192.168.43.2:/home/sk/
這裡,
sk
是我的遠程系統的用戶名192.168.43.2
是遠程機器的 IP 地址。
現在,我按下 CTRL+C
結束它。
示例輸出:
sk@192.168.43.2's password:
ubuntu-16.04-desktop-amd64.iso 26% 372MB 26.2MB/s 00:39 ETA^c
正如你在上面的輸出中看到的,當它達到 26% 時,我終止了複製過程。
如果我重新運行上面的命令,它只會覆蓋現有的文件。換句話說,複製過程不會在我斷開的地方恢復。
為了恢複復制過程,我們可以使用 rsync
命令,如下所示。
$ rsync -P -rsh=ssh Soft_Backup/OS Images/Linux/ubuntu-16.04-desktop-amd64.iso sk@192.168.43.2:/home/sk/
示例輸出:
sk@192.168.1.103's password:
sending incremental file list
ubuntu-16.04-desktop-amd64.iso
380.56M 26% 41.05MB/s 0:00:25
看見了嗎?現在,複製過程在我們之前斷開的地方恢復了。你也可以像下面那樣使用 -partial
而不是 -P
參數。
$ rsync --partial -rsh=ssh Soft_Backup/OS Images/Linux/ubuntu-16.04-desktop-amd64.iso sk@192.168.43.2:/home/sk/
這裡,參數 -partial
或 -P
告訴 rsync
命令保留部分下載的文件並恢復進度。
或者,我們也可以使用以下命令通過 SSH 恢復部分傳輸的文件。
$ rsync -avP Soft_Backup/OS Images/Linux/ubuntu-16.04-desktop-amd64.iso sk@192.168.43.2:/home/sk/
或者,
rsync -av --partial Soft_Backup/OS Images/Linux/ubuntu-16.04-desktop-amd64.iso sk@192.168.43.2:/home/sk/
就是這樣了。你現在知道如何使用 rsync
命令恢復取消、中斷和部分下載的文件。正如你所看到的,它也不是那麼難。如果兩個系統都安裝了 rsync
,我們可以輕鬆地通過上面描述的那樣恢複復制的進度。
如果你覺得本教程有幫助,請在你的社交、專業網路上分享,並支持我們。還有更多的好東西。敬請關注!
乾杯!
via: https://www.ostechnix.com/how-to-resume-partially-downloaded-or-transferred-files-using-rsync/
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive