Last Updated on 2022-01-05 by Clay
在 Linux 系統中,難免存在著交換檔案的需求,比如說我要將使用者資料從伺服器 A 移動到伺服器 B、或是我有容量很大的電影要從遠端的伺服器傳送到我的裝置本地端……
然而,若是我們很單純地直接使用 scp
指令進行檔案的傳輸,萬一遇到網路不穩導致連線中斷,你會很驚恐地發現 scp
並不支援檔案從斷點繼續開始傳送,你必須重新開始傳送整份檔案…… 這對於網路環境不穩的使用者來說無疑是惡夢。
所幸,rsync
指令就支援這個功能了。本篇文章簡單紀錄該如何使用這個指令來做到斷點續傳。
rsync 指令完成斷點續傳
rsync -P --rsh=ssh [FILE] [REMOTE_IP]:~/
更詳細的指令可以使用 man
去查看:
除此之外網路上也有許多教學推薦將其設定 alias 讓指令簡化,我也覺得挺方便的。
首先使用任意偏好的編輯器打開 ~/.bashrc,並在不影響其他指令設置處(通常尾端便是)寫下:
# Alias
alias rscp="rsync -P --rsh=ssh"
完成之後再使用:
source ~/.bashrc
就會讓設定馬上生效。
順帶一提如果傳輸的裝置端口(port)有經過改動,我們可以將指令修改成:
rsync -P -e 'ssh -p xxxx' [FILE] [REMOTE_IP]:~/
其中 -p xxxx
就是填入指定端口即可。
References
- https://stackoverflow.com/questions/4549945/is-it-possible-to-specify-a-different-ssh-port-when-using-rsync
- https://unix.stackexchange.com/questions/48298/can-rsync-resume-after-being-interrupted