如何保持 SSH 连接上的 rsync 永久有效 - 没有管道损坏

如何保持 SSH 连接上的 rsync 永久有效 - 没有管道损坏

我尝试在无法控制 ssh-config 文件的共享服务器上运行 rsync,以防止由于连接断开而导致管道断裂错误。

以下是我用来备份的代码片段

rsync -avz --blocking-io --delete-after --exclude 'mail*' /home user@remote:./backup/monthly/

使用这个大约 10 分钟后就可以正常工作。,然后出现管道损坏错误,告诉我连接丢失了...可能是因为 rsync 通过 SSH 以空闲状态运行,所以 SSH 认为我在 rsync 运行时没有执行任何操作。

我尝试过使用和不使用 --blocking-io,但连接仍然断开。有什么技巧可以让 SSH 会话保持活动状态直到 rsync 完成吗?无需访问 ssh-config 文件

答案1

只要您正在运行 OpenSSH,此方法就可以奏效。

编辑您的~/.ssh/config文件并添加以下内容,以便为您的用户和连接到的所有主机激活保持活动系统。

如果您只想对一个主机执行此操作,请切换*为您选择的主机名。

Host *
    ServerAliveInterval 300
    ServerAliveCountMax 2

答案2

您应该使用参数“ServerAliveInterval”,如下所示:

rsync -avzhe 'ssh -o ServerAliveInterval=60' local/dir/files your_user@remote:/destination/ 

相关内容