如何使用 rsync 恢复中断的传输

jia*_*103 1 linux rsync file-transfer tar

我需要中断并重新启动 Linux 复制操作。做这个的最好方式是什么?

我目前正在将数据从一台 Debian PC 复制到另一台。我通过以下方式开始此操作sshfstar但没有使用要求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 &
Run Code Online (Sandbox Code Playgroud)

远程盒子是系统救援 CD 的一次性启动,没有本地操作系统,并且位于我的防火墙内,因此我不太关心以 root 身份登录,除非有人提出其他意见。

这比我最初预期的时间要长,因此我需要中断操作以关闭远程盒电源几分钟。

当我重新启动它时,我知道我无法恢复 tar 操作;相反,是否有类似rsync命令的东西可以让我轻松地从中断处恢复并完成传输,包括在中断操作时完成正在进行的文件的拙劣传输?

完成后,我计划运行rsync答案中的命令来验证传输是否成功完成,除非有人建议这是多余的:

local$ rsync -niaHc /path/to/local/data/to/copy/ /path/to/remote-sdb1/path/to/local/data/to/copy
Run Code Online (Sandbox Code Playgroud)

(如帖子中所述,我需要小心以 . 结尾第一个文件夹名称/。)

Ast*_*ara 6

确切地说,您不能,因为源目录中的文件可能与原来的不同。即 rsync 将下载文件的较新版本。

通常,要恢复它,请重复相同的命令。

除非您使用了--partial,否则不完整的文件不会留在您的目录中,因此只需重复相同的命令即可 - 已经传输的文件不会第二次传输,而未传输的文件将被传输。

顺便说一句,为了确保我最终不会将源的第二个副本发送到目标中,我总是使用的是我首先确保创建目标目录。然后使用:

rsync <options> source/. dest/.
Run Code Online (Sandbox Code Playgroud)

这样,(假设您正在使用某种递归选项),它将确保将源内容复制到目标内容中。