![如何使用 rsync 恢复中断的传输](https://linux22.com/image/1528949/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20rsync%20%E6%81%A2%E5%A4%8D%E4%B8%AD%E6%96%AD%E7%9A%84%E4%BC%A0%E8%BE%93.png)
我需要中断并重新启动 Linux 复制操作。最好的方法是什么?
我目前正在将数据从一台 Debian PC 复制到另一台。我通过以下方式开始此过程sshfs
,tar
但没有使用要求sshfs
,也不tar
需要另一种可靠的方法:
local$ mkdir /path/to/remote-sdb1
local$ sshfs root@remote:/mnt/sdb1 /path/to/remote-sdb1
local$ tar cf - /path/to/local/data/to/copy | tar xf - -C /path/to/remote-sdb1 &
远程盒是系统救援 CD 的一次性启动,没有本地操作系统且位于我的防火墙内,因此我并不太担心以 root 身份登录,除非有人另有评论。
这比我最初预期的要花费更长的时间,所以我需要中断操作以关闭远程盒子的电源几分钟。
当我重新启动它时,我知道我无法恢复 tar 操作;相反,是否有类似rsync
命令的东西可以让我轻松地从上次中断的地方恢复并完成传输,包括在我中断操作时完成正在进行的文件的失败传输?
完成后,我计划rsync
在这回答以验证传输是否成功完成,除非有人建议这是多余的:
local$ rsync -niaHc /path/to/local/data/to/copy/ /path/to/remote-sdb1/path/to/local/data/to/copy
(正如帖子中所述,我需要小心以 . 结尾第一个文件夹名称/
。)
答案1
你不能,确切地,因为源目录中的文件可能与原始文件不同。即 rsync 将下载文件的较新版本。
要恢复它,通常重复相同的命令。
除非您使用--partial
,否则不完整的文件不会留在您的目录中,因此只需重复相同的命令 - 已经传输的文件将不会再传输第二次,而尚未传输的文件将被传输。
顺便说一句,为了确保不会将源文件的第二份副本发送到目标文件,我始终使用的方法首先确保已创建目标目录。然后使用:
rsync <options> source/. dest/.
这样,(假设您使用某些递归选项),它将确保将源内容复制到目标内容中。