rsync with inplace 删除目录

问题描述

我在 2 个系统之间连续执行 rsync,由于已知原因,tcp 连接中断。 在极少数情况下,整个 rsync 目标目录会被删除,数据会同步到其他位置。

使用的 rsync 选项是“-rpt -iP --stats --inplace”,我读到了有关 --inplace 与中断连接不一致的信息。

-rpt -iP --stats --inplace >> 失败

需要帮助想出最安全的方法,以避免在频繁连接中断的环境中出现 rsync 不一致

解决方法

如果您需要以一致的方式同步整个目录,请使用:

Array
(
    [0] => 1/0/10.txt
    [1] => 1/2/3/4/1234.txt
    [2] => 1/4/4/144.txt
    [3] => 2/2.txt
    [4] => 1/0/1/101.txt
    [5] => 2/3/1/231.txt
    [6] => 2/1/3/213.txt
)

Linux manrsync -avz \ --partial \ --partial-dir=.rsync-partial/ \ --delay-updates \ --delete \ --stats \ ...

这有几个影响:(1) 使用中的二进制文件无法更新(操作系统会阻止这种情况发生,或者尝试换入数据的二进制文件将行为异常或崩溃),(2) 文件的数据传输过程中将处于不一致状态,(3) 如果传输中断或更新失败,文件数据可能在传输后处于不一致状态

因此,--inplace 不能用于一致同步。而是使用 delay-updates 算法来保证只有在成功完成传输后才会隐含目标目录更改。

您也可以决定使用 --inplace 而不是 -a-rpt 参数等效于 -a,这是为一致同步设置的完整参数。 -rlptgoD 参数可用于传输时的详细输出和压缩(减少流量)。