rsync 备份期间远程主机关闭了与 xx.xx.xx.xx 的连接

rsync 备份期间远程主机关闭了与 xx.xx.xx.xx 的连接

我有 2 个网络服务器。为了简单起见,我们将它们称为本地和远程。本地:我只有 ftp 和 cron 访问权限,远程:ssh/ftp

我编写了一个简单的备份脚本,它对文件进行压缩,然后将它们发送到远程服务器。 (在 cron 中调用)本地服务器添加到远程服务器上的 ~/.ssh/authorized_keys 中,无需使用密码即可进行连接。

cd $FILES_TO_BACKUP_DIR
for dir in */
do
    base=$(basename "$dir")
    tar -czpf "$BACKUP_DIR/${base}-$DATE.tar.gz" "$dir"
    rsync -az -e "ssh -p $REMOTE_HOST_PORT -i $KEY_PATH" $BACKUP_DIR $REMOTE_HOST_ADDRESS:$REMOTE_BACKUP_DIR
    rm $BACKUP_DIR/${base}-$DATE.tar.gz
done

我认为它工作正常 - 文件出现在远程服务器上。我比较了所有文件的大小以及其中一些文件的校验和。一切都匹配。

但是我不确定这条消息: Connection to xxx.xxx.xxx.xxx closed by remote host. 每次调用脚本时它出现的次数都不同。

出于测试目的,我复制了大约 20 个 tar。

set -x我在脚本的开头添加了它以显示正在执行的每一行。

这是日志的一部分:

./backup.sh
+ cd /home/tobackup/
+ for dir in '*/'
++ basename lgsm/
+ base=lgsm
+ tar -czpf /home/test/_backups/backups-tmp/lgsm-09-01-2020.tar.gz lgsm/
+ rsync -vaz -e 'ssh -p PORT' /home/test/_backups/backups-tmp USER@IP:/home/backups_test/_backups/backups
sending incremental file list
backups-tmp/
backups-tmp/lgsm-09-01-2020.tar.gz
backups-tmp/serverfiles-09-01-2020.tar.gz
Connection to IP closed by remote host.

sent 237,480,856 bytes  received 10,786 bytes  6,168,614.08 bytes/sec
total size is 241,069,740  speedup is 1.02
+ rm /home/test/_backups/backups-tmp/lgsm-09-01-2020.tar.gz
+ for dir in '*/'
++ basename log/
+ base=log
+ tar -czpf /home/test/_backups/backups-tmp/log-09-01-2020.tar.gz log/
+ rsync -vaz -e 'ssh -p PORT' /home/test/_backups/backups-tmp USER@IP:/home/backups_test/_backups/backups
sending incremental file list
backups-tmp/
backups-tmp/log-09-01-2020.tar.gz
Connection to IP closed by remote host.

sent 900 bytes  received 81 bytes  654.00 bytes/sec
total size is 237,899,887  speedup is 242,507.53
+ rm /home/test/_backups/backups-tmp/log-09-01-2020.tar.gz
+ for dir in '*/'
++ basename serverfiles/
+ base=serverfiles
+ tar -czpf /home/test/_backups/backups-tmp/serverfiles-09-01-2020.tar.gz serverfiles/

我很好奇为什么会发生这种情况,如果可能的话,我该如何防止这种行为。 (如果它看起来并不重要,我想隐藏该消息,但保留潜在的其他错误消息。我已尝试使用rsync -q来抑制该消息,)

答案1

我比较了 5 台不同服务器之间所描述的行为,只有与一台特定服务器的连接存在此问题。

检查 md5 校验和后,我确信文件是相同的。

由于警告不会影响任何内容,因此我决定隐藏该消息。
现在,我已经修改了服务器上的备份脚本,因此在使用 ssh 的情况下,它首先通过以下方式将输出记录到文件中: >> $BACKUP_LOGS_FILE 2>&1在命令末尾。

在脚本的最后,我使用 grep 过滤掉输出:grep -v 'Connection to xxx.xxx.xxx.xxx closed by remote host.' $BACKUP_LOGS_FILE

但是,如果有人有任何解释可能导致此问题的原因,请随时添加您的答案。

相关内容