我遇到了一个问题,那就是我从一个有缺陷的循环数据移动器节点 rsync 数据。其中一个节点不断断开与我的数据来源文件系统的数据连接,需要重新连接,这可能需要几分钟的时间。在此期间,该特定文件的 rsync 不会中止,只是挂起,最多几分钟,直到下载继续。因为这是对时间至关重要的数据,所以这不是一个可行的选择,而应该在连接停滞时尽快断开连接,然后重新连接(无论如何,这将被负载平衡到下一个节点)。
有人能想到一种方法来告诉 rsync 中止已停滞超过 20 秒的传输吗?
损坏的数据移动节点的操作员对这个问题的反应很慢,他们意识到了这个问题,但目前没有采取任何措施,所以我需要在我的终端找到解决方案。
我尝试使用--timeout选项,但当数据连接停滞时它似乎不起作用。
答案1
文件传输停滞后,您可以运行 rsync 并--timeout=SECONDS
退出。较新版本的 rsync 具有--contimeout=SECONDS
连接超时功能。
# timeout after 20 seconds
rsync --timeout=20 source destination
# timeout after 3 seconds of no connectivity
rsync --contimeout=3 source destination
答案2
如果你知道每次 rsync 运行的最大持续时间,你可以使用timeout
:
$ timeout 120 /usr/bin/rsync <options>
答案3
您使用的是哪种 rsync 传输?如果是 SSH,那么您可能能够将配置选项传递给 SSH 以帮助您超时连接。我没有好的方法来测试,但也许ServerAliveInterval
和TCPKeepAlive
选项可能会满足您的需求?