我有一些创建文本日志文件和一些备份服务器的进程。 我想将文本日志文件移动到备份服务器(使用删除源文件)。并且在下一个rsync启动时,如果存在具有相同名称的日志文件 - 将其与先前移动的文件追加/连接。
rsync -av --append --remove-source-files user@server1:/source/ user@server2:/destination/
除了 - 如果在源和目标上有相同名称的文件,并且目标/接收者的文件长于源服务器上的文件 - 它被删除时,一切都很有效。我如何禁用此--append的文件长度验证?我想简单地追加具有相同名称的文件,没有任何限制。
答案 0 :(得分:0)
append
选项并非如此。
从手册页:
这会导致rsync通过将数据附加到末尾来更新文件 该文件,假定已经存在的数据 接收方与发送时文件的开头相同 侧。
所以,如果你"追加" 2KB文件到1KB文件,结束文件为2KB,较大文件的前1KB将被丢弃。相反,如果你"追加"一个大小相等或更小的文件,然后整个文件最终会被丢弃。
通过传递--append
选项,你基本上承诺你知道的rsync,文件的开头永远不会改变。
但是,如果删除该文件,则文件的开头已更改。同样,logrotate会使坏事发生。
结论:--append
与--remove-source-files
不匹配。
--append-verify
选项可以解决logrotate问题,但不会解决您的问题,因为它仍然会丢弃数据(尽管不同的数据)。