rsync 连接在一小时左右关闭

rsync 连接在一小时左右关闭

我正在 cron 中运行一些命令,该命令在两个数据中心之间执行 rsync。数据中心之间的连接速率约为 1Mbps。我注意到 rsync 在传输大约 2.7GB 到 2.9GB 的数据时不断失败,这可能相当于上述连接上大约一个小时或更长时间。我知道过去我们的防火墙配置为关闭已打开一个多小时的空闲连接。

但是 rsync 传输真的会空闲吗?我该怎么做才能解决这个问题?

错误:

rsync:连接意外关闭(迄今已接收 2987596424 字节)[接收方]

rsync 错误:io.c(605) 处的 rsync 协议数据流 (代码 12) 出现错误 [接收器 = 3.0.9]

rsync:连接意外关闭(迄今已接收 523 字节)[生成器]

rsync 错误:io.c(605) 处的 rsync 协议数据流 (代码 12) 出现错误 [generator=3.0.9]

我的 ~/.ssh/config 中已经有这个了(但也许这些值需要增加?):

Host *
  ServerAliveInterval 60
  ServerAliveCountMax 15

答案1

rsync 传输期间网络连接空闲:

是的,rsync可以留下安静的在磁盘读取期间并且没有数据包要发送......

你说。我们的防火墙配置为关闭已打开一个多小时的空闲连接但没有关于连续闲置时长

rsync在两端进行处理,根据之前计算的校验和,读取整个文件来搜索数据包之间的差异。

当两端的文件没有差异时,如果不找到差异,两端就可能无法进行交换。

这里有一张小图表示我的桌面和他的备份之间的一次 rsync 运行:

跟踪 rsync 网络流量

我们可以看到几秒过去了没有数据:

TIME                     BLOCKS           BYTES
                        IN  OUT      IN     OUT
...
Jul 28 15:00:07 2013   449   41   23443 1526403
Jul 28 15:00:08 2013     0    0       0       0
Jul 28 15:00:09 2013     0    0       0       0
Jul 28 15:00:10 2013   143  182   21348 1123986
Jul 28 15:00:11 2013   112  142    6966  523326
Jul 28 15:00:12 2013    31   30    1942    1890
Jul 28 15:00:13 2013    30   28    1853   88038
Jul 28 15:00:14 2013     0    0       0       0
Jul 28 15:00:15 2013    57   66    3954   38301
...

解决方法:

作为一种解决方法,您可以使用基于套接字的 ssh 共享

首先运行一个简单的 ssh 来挂起套接字和连接

ssh -M -o ControlPath=$HOME/.ssh/socket_test destHost ping -n localhost

在另一个窗口中:

rsync -e 'ssh -e none -S $HOME/.ssh/socket_test' /src/file destHost:/dst/file

这样,两个连接将仅使用一个连接ssh 会话ping将确保(大量)连续流量,然后rsync可以使用相同的网络连接安静地工作。

相关内容