BackupPC - 传输间歇性失败

BackupPC - 传输间歇性失败

BackupPC 在我的 LAN 上运行良好,但在备份我的远程服务器时出现问题。我通过 ssh 使用 rsync,并将最大 ping 增加到 500,因为远程服务器距离较远。

这是我的错误日志(用户和 1.2.3.4 是屏蔽信息):

已开始对目录 / 进行完整备份,正在运行:/usr/bin/ssh -p 2222 -q -x -l user 1.2.3.4 /usr/bin/rsync --server --sender --numeric-ids --perms --owner --group -D --links --hard-links --times --block-size=2048 --recursive --ignore-times . /

Xfer PIDs are now 5705
Got remote protocol 30
Negotiated protocol version 28
Sent include: /home
Sent include: /home/user
Sent exclude: /*
Sent exclude: /home/*
Sent exclude: /home/user/folder1
Sent exclude: /home/user/folder2
Xfer PIDs are now 5705,5744
[ skipped 22380 lines ]
Read EOF: 
Tried again: got 0 bytes
Can't write 4 bytes to socket
finish: removing in-process file home/user/site15/something/else/here/p4677545.jpg
Child is aborting
Done: 19205 files, 799171349 bytes
Got fatal error during xfer (aborted by signal=PIPE)
Backup aborted by user signal
Saving this as a partial backup

尝试以用户 backuppc 身份通过 ssh 连接到远程服务器,无需输入密码。一般日志如下:


> 2012-02-29 00:00:00 已开始目录 / 的完整备份
> 2012-02-29 01:00:12 在收到信号 PIPE 后中止备份
> 2012-02-29 01:00:13 在传输过程中发生致命错误(由信号 = PIPE 中止)
> 2012-02-29 02:00:01 已开始目录 / 的完整备份
> 2012-02-29 03:01:09 在收到信号 PIPE 后中止备份
> 2012-02-29 03:01:11 在传输过程中发生致命错误(由信号 = PIPE 中止)
> 2012-02-29 10:56:16 已开始目录 / 的完整备份
> 2012-02-29 11:59:18 在收到信号 PIPE 后中止备份
> 2012-02-29 11:59:20 传输过程中发生致命错误(由信号 = PIPE 中止)
> 2012-02-29 11:59:20 保存部分转储 0
> 2012-02-29 12:25:15 已开始目录 / 的完整备份
> 2012-02-29 13:26:55 收到信号 PIPE 后中止备份
> 2012-02-29 13:26:57 传输过程中发生致命错误(由信号 = PIPE 中止)
> 2012-02-29 16:48:52 已开始目录 / 的完整备份
> 2012-02-29 17:51:41 收到信号 PIPE 后中止备份
> 2012-02-29 17:51:42 传输过程中发生致命错误(由信号 = PIPE 中止)信号 = PIPE)
> 2012-02-29 17:51:42 已保存部分转储 0
> 2012-02-29 18:13:27 已开始对目录 / 进行完整备份
> 2012-02-29 19:15:19 收到信号 PIPE 后中止备份
> 2012-02-29 19:15:20 传输期间出现致命错误 (被信号 = PIPE 中止)
> 2012-02-29 19:15:20 已保存部分转储 0
> 2012-02-29 19:19:55 已开始对目录 / 进行完整备份

几乎总是在 1h01' 或 1h02' 后结束。这些秒数是 3660 和 3720。也许它们出现在某个选项中……?有什么评论吗?

谢谢

编辑:我尝试过但没有奏效的方法: - ServerAliveInterval=300,ServerAliveInterval=60 - 将 PingMaxMsec 增加到 500 - rsync 选项 --timeout 和 --contimeout 设置为 20 和 200 秒(两个选项都尝试了这两个值) - 从 rsync 中删除块大小选项

什么都没起作用。它通常会停止在不同的文件中,与它们的大小无关。

新编辑:如果我手动登录到这个远程 ssh 服务器,并且 1 小时 26 分钟内不碰我的终端,我就会断开连接。看起来这也是 BackupPC 断开连接的原因。有没有办法模拟 BackupPC 会话中命令的执行?

答案1

您可以尝试手动逐个发出完整备份命令。每次执行时,backuppc 都会传输不同的数据块。备份成功后,您就会知道所有数据都已传输。

您还可以使用 ssh 的压缩选项来加快进程并减少迭代。

额外的增量备份不会造成任何问题,因为它们通常体积小得多,时间也更短,所以您的连接不会超时。

答案2

您应该检查$Conf{客户端超时}在您的配置中并相应地增加它。

由于实施限制,BackupPC 几乎无法了解较长文件传输过程中发生的情况。为了防止无效传输永远存在,传输将在$Conf{ClientTimeout}几秒后取消 - 如果远程服务器上的任何单个文件备份时间超过此值设置,则备份传输将被中止。

答案3

如果您或提供商有防火墙,请检查其 session-ttl。常见值为 3600...如果您没有防火墙,您也可以使用 ssh 并设置以下选项服务器存活间隔正如这里提到的:https://unix.stackexchange.com/questions/34004/how-does-tcp-keepalive-work-in-sshbackuppc 可以做相应修改。

相关内容