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 可以做相应修改。