仅当通过 cron 启动时 rsync 才会失败

仅当通过 cron 启动时 rsync 才会失败

我正在尝试rsync在启动时通过条目将文件从远程服务器发送到本地计算机crontab。我的rsync脚本等待resolv.confDHCP 进程进行配置,然后开始rsync.不幸的是,当脚本在启动时运行时,rsync失败并出现以下错误:

2019/09/05 12:37:22 [392] rsync: getaddrinfo: [server-name.domain.tld] 873: Name or service not known
2019/09/05 12:37:22 [392] rsync error: error in socket IO (code 10) at clientserver.c(125) [Receiver=3.1.2] 

我尝试了一些修改来更好地理解这个问题:

  1. 由于该客户是现在在我的本地网络上,并且我的本地网络支持 mDNS,我尝试切换到[server-name.local],并启动脚本。这按预期工作。
  2. 接下来,我尝试rsync在客户端完全启动后手动运行该命令。脚本中的命令没有更改,并且使用[server-name.domain.tld].这样可行。
rsync -avy  --log-file=$script_path/$logfile --password-file $script_path/$password_file --contimeout=30  --exclude 'sample' rsync://$rsync_username@$rsync_server/$rsync_path/ $dest_path/

所以我想知道我在启动过程中忽略了什么可能是托管名称解析。

如果相关的话,这是我客户的/etc/nsswitch.conf

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat
group:          compat
shadow:         compat
gshadow:        files

hosts:          files mdns4_minimal dns [NOTFOUND=return]

networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

答案1

我找到了类似问题的答案。结果:名称解析花费的时间太长。因此,在脚本中,在 之前rsync,我添加了一个dig [server.domain.tld],以便缓存响应。繁荣。问题解决了。

相关内容