Rsync 任务:优先考虑文件传输的链接目标

Rsync 任务:优先考虑文件传输的链接目标

我有一个如下命令:

rsync -avp -e ssh /folder user@server:/backups/2 --link-dest=../1文件夹数量每天都在增加。

此命令每天晚上都会通过我非常慢的互联网连接运行。如果它在晚上没有完成,则该进程将被终止,因为否则我的连接在白天无法使用。如果 Rsync 从创建硬链接开始,然后进行数据传输,这将正常工作。

不幸的是,Rsync 似乎是按字母顺序执行任务的。因此有时它先传输数据,然后创建硬链接。

如果该过程无法在一夜之间完成,则它需要在第二天晚上上传更多的数据,因为文件夹 2 中尚未创建硬链接!

有没有办法让 Rsync 先创建硬链接,然后再进行文件传输?

多谢!

答案1

答案是添加--delay-updates。这会导致 Rsync 首先构建所有更改的列表。然后目标将创建所有硬链接并创建所有文件夹。之后,数据传输将开始。

rsync -avp --delay-updates -e ssh /folder user@server:/backups/2 --link-dest=../1

答案2

--link-dest=../1数字应指向最近成功的备份,而不是最近的尝试。

或者,更好的是,使用多个 --link-dest 标志,一个用于最近的成功,其他标志用于自最近成功以来的任何失败的尝试。

引用手册页:

Beginning in version 2.6.4, multiple --link-dest directories may
be provided, which will cause rsync to search the  list  in  the
order  specified  for  an exact match.

将其与--delay-updates正如乔尔所建议的那样),这样你就会拥有一个相当强大的系统。

但是,只要带宽非常有限,随着数据需求的增长,问题只会越来越严重。我曾经遇到过这种情况。rsync 一夜之间才勉强完成。几周后,它还没有在 24 小时内完成。由于这是每日任务,所以你可以看出问题所在!它可能会赶上周末的进度,但很快就不够了。最终,我不得不想办法获得更多带宽。

如果您要在生产系统中使用它,我建议您记录有多少次失败,以及“自上次成功以来失败的次数”。设置监控来收集这些数据,并在“自上次成功以来失败的次数”增长到不可接受的数字时发出警报(2?5?这取决于您的需求)。

相关内容