我在Debian Squeeze服务器上运行BackupPc。 它成功地备份了我局域网上的其他Debian Squeeze机器。 我已经将它设置为在Wan上备份另一台Debian Squeeze机器,但是备份总是失败并显示错误消息:
Aborting backup up after signal PIPE Got fatal error during xfer (aborted by signal=PIPE)
备份是通过ssh执行的,这个备份客户端的configuration是:
$Conf{RsyncArgs} = [ # Do not edit these! '--numeric-ids', '--perms', '--owner', '--group', '--devices', '--links', '--times', '--block-size=2048', '--recursive', # # If you are using a patched client rsync that supports the # --checksum-seed option (see http://backuppc.sourceforge.net), # then uncomment this to enabled rsync checksum cachcing # '--checksum-seed=32761', # # Add additional arguments here # '-D', '--one-file-system', ]; $Conf{FullPeriod} = 6.97; $Conf{IncrPeriod} = 0.49; $Conf{FullKeepCnt} = 4; $Conf{IncrKeepCnt} = 93; $Conf{XferMethod} = 'rsync'; $Conf{RsyncShareName} = '/'; $Conf{BackupFilesExclude} = [ '/cdrom', '/dev', '/files/_nobackup', '/floppy', '/lost+found', '/mnt', '/proc', '/sys', '/tmp/ssh-*', '/var/lib/amavis/amavisd.sock', '/var/lib/backuppc', '/var/lib/nagios3/rw/nagios.cmd', '/var/run/acpid.socket', '/var/run/clamav/clamd.ctl', '/var/run/courier/authdaemon/socket', '/var/run/mysqld/mysqld.sock', '/var/run/nut/usbhid-ups-apc_backups_cs500', '/var/run/proftpd.sock', '/var/run/screen', '/var/spool/postfix/private/amavis', '/var/spool/postfix/private/anvil', '/var/spool/postfix/private/bounce', '/var/spool/postfix/private/bsmtp', '/var/spool/postfix/private/defer', '/var/spool/postfix/private/discard', '/var/spool/postfix/private/error', '/var/spool/postfix/private/ifmail', '/var/spool/postfix/private/lmtp', '/var/spool/postfix/private/local', '/var/spool/postfix/private/maildrop', '/var/spool/postfix/private/odmr', '/var/spool/postfix/private/proxymap', '/var/spool/postfix/private/relay', '/var/spool/postfix/private/retry', '/var/spool/postfix/private/rewrite', '/var/spool/postfix/private/scache', '/var/spool/postfix/private/scalemail-backend', '/var/spool/postfix/private/smtp', '/var/spool/postfix/private/tlsmgr', '/var/spool/postfix/private/trace', '/var/spool/postfix/private/uucp', '/var/spool/postfix/private/verify', '/var/spool/postfix/private/virtual', '/var/spool/postfix/public/cleanup', '/var/spool/postfix/public/flush', '/var/spool/postfix/public/pickup', '/var/spool/postfix/public/qmgr', '/var/spool/postfix/public/showq', '/var/spool/postfix/var/run/saslauthd/mux', '/var/spool/squid', ]; $Conf{XferLogLevel} = 1; $Conf{CompressLevel} = 9; $Conf{PingMaxMsec} = 200; $Conf{ClientTimeout} = 3600*8; # 6 Hours!!
我尝试了一个本地tar备份,看看有没有问题的文件系统,一切都很好。
任何关于如何debugging的build议?
我已经投入了sigpipe的意义。 正如在SIGPIPE – 维基百科中所描述的,免费的百科全书 :
在符合POSIX标准的平台上,SIGPIPE是当它试图写入pipe道而没有连接到另一端的进程时发送给进程的信号。 …
所以我怀疑这个问题是由于ssh传输断开了。
我已经设置了更长的超时ssh使用选项-o ServerAliveInterval = 300,添加到configuration
$Conf{RsyncClientCmd} = '$sshPath -o ServerAliveInterval=300 -q -x -l root $host $rsyncPath $argList+';
现在备份已经成功完成!
为了防止这种情况对其他人有用,我们在某些备份(只有增量)时才会同时“中止信号= PIPE”和“subprocess退出”。 调整$ Conf(RsyncClientCmd)不适用于我们在Centos 5上安装BackupPc 3.1(即将升级),因为它首先破坏了连接的尝试。 我们通过ssh使用Rsync。
由于该机器专门用于备份,而且我们担心其他人使用ssh访问,所以我们只需在客户端机器(不是BackupPc服务器)上的/etc/ssh/sshd_conf设置ClientAliveInterval=300 ,但是可以这样做个人login代替。
使用RsyncShareName运行备份时,我收到了此消息,因为RsyncShareName参数(定义应同步哪些文件夹)不正确:服务器上不存在给定的文件夹。
您可以在Xfer设置中检查此参数。