rsync 中的选项(--partial,--partial-dir)不能像我期望的那样工作

pal*_*wim 7 windows rsync

我一直试图弄清楚如何在rsync 中恢复部分传输(在 Windows 上,使用cygwin)而不使用该--inplace选项。

我看到 rsync 在目标目录中创建了“部分”文件,名称类似于.[filename].2dxZ1a,因此,据我所知,如果我使用该--partial选项,rsync 会看到这样的文件并继续传输到此文件. 但是,我发现如果我使用该--partial选项并且 rsync 进程结束,那么当我再次启动 rsync 命令时,它会删除那些部分文件。也许此选项适用于短暂的传输中断,但不适用于流程结束并重新开始时。

除了这个选项,我实际上很喜欢这个--partial-dir选项,希望如果我指定--partial-dir=".rsync"(带或不带引号),rsync 会在目标目录中创建目录.rsync并将文件传输到[dir]/.rsync,移动传输完成后将它们发送到[dir](并在不再需要时删除[dir]/.rsync)。但是,似乎 rsync 完全忽略了该选项,只是像平常一样在目标目录中创建其临时文件(并在重新启动时删除它们)。

所以,我想知道:我做错了什么还是我只是没有正确理解这些选项?

我的命令是: rsync -rt --log-file="rsync.log" --partial-dir=".rsync" --del rsync://rsync-server:port/module/ /cygdrive/local/path/

pal*_*wim 8

我是从 Windows 任务计划程序启动这个命令的。当我接受命令并从控制台(命令提示符)运行它时,这些选项会正常工作*。

命令执行之间的唯一区别发生在我试图结束它们时。在控制台中,按Ctrl+Crsync以错误结束

rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at ...
Run Code Online (Sandbox Code Playgroud)

在 Windows 任务计划程序中,右键单击正在运行的任务并选择结束导致错误

rsync: read error: Connection reset by peer (104)
Run Code Online (Sandbox Code Playgroud)

因此,我只能假设 Windows 任务计划程序结束进程的方式与 rsync 期望的结束方式不同,这使得 rsync 结束而不执行其退出例程。


* - 我找到了更多关于方式--partial--partial-dir工作的信息。

使用--partialrsync像我看到的那样创建一个临时文件,但是当 rsync 结束时(以预期的方式),它将该临时文件重命名为常规文件名(例如将.[filename].2dxZ1a重命名为[filename]),然后进行复制在下次运行时将部分文件复制到新的临时文件(例如,将[filename]复制到.[filename].34cae2)。

使用--partial-dirrsync填充临时文件,然后在关闭时将临时文件移动到您指定为常规文件名的目录中(例如将.[filename].2dxZ1a重命名为[partial-dir]/[filename])。然后,在下一次运行时,它将文件从[partial-dir]复制到目标目录中的一个新临时文件。