rsync,在接收器上附加较小的文件部分

时间:2016-11-22 17:52:15

标签: rsync

我有一些创建文本日志文件和一些备份服务器的进程。 我想将文本日志文件移动到备份服务器(使用删除源文件)。并且在下一个rsync启动时,如果存在具有相同名称的日志文件 - 将其与先前移动的文件追加/连接。

rsync -av --append --remove-source-files user@server1:/source/ user@server2:/destination/

除了 - 如果在源和目标上有相同名称的文件,并且目标/接收者的文件长于源服务器上的文件 - 它被删除时,一切都很有效。我如何禁用此--append的文件长度验证?我想简单地追加具有相同名称的文件,没有任何限制。

1 个答案:

答案 0 :(得分:0)

append选项并非如此。

从手册页:

  

这会导致rsync通过将数据附加到末尾来更新文件   该文件,假定已经存在的数据   接收方与发送时文件的开头相同   侧。

所以,如果你"追加" 2KB文件到1KB文件,结束文件为2KB,较大文件的前1KB将被丢弃。相反,如果你"追加"一个大小相等或更小的文件,然后整个文件最终会被丢弃。

通过传递--append选项,你基本上承诺你知道的rsync,文件的开头永远不会改变。

但是,如果删除该文件,则文件的开头已更改。同样,logrotate会使坏事发生。

结论:--append--remove-source-files不匹配。

--append-verify选项可以解决logrotate问题,但不会解决您的问题,因为它仍然会丢弃数据(尽管不同的数据)。