最近,我使用多年的备份脚本开始出现问题。出现问题的部分归结为:
for DIR in "${BACKUP_DIRS[@]}"; do
rsync --acls --archive --delete \
--link-dest=${DIR} \
--stats \
--verbose \
--rsh="ssh -o BatchMode=yes -i ${KEY}" \
"${USER}"@${HOST}:"${DIR}" "${BACKUP_DIR}/"
done
现在我遇到的问题是,在列出的第一个(也是唯一第一个)目录中${BACKUP_DIRS[@]}
,rsync
退出时出现错误:
ssh: Could not resolve hostname <host>: Name or service not known
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: unexplained error (code 255) at io.c(226) [Receiver=3.1.3]
An error occurred during backup of <dir>.
非常感谢任何关于如何解决此问题的线索。
答案1
正如 András Korn 所说,问题在于 DNS 解析器耗时太长。
通过在调用之前添加额外的 DNS 查找rsync
,查询结果在rsync
调用时会很快出来,因为查询结果已经被缓存了。
可以使用getent
、host
或dig
通过 ping 主机来强制进行 DNS 查找。