我正在尝试rsync
在启动时通过条目将文件从远程服务器发送到本地计算机crontab
。我的rsync
脚本等待resolv.conf
DHCP 进程进行配置,然后开始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]
我尝试了一些修改来更好地理解这个问题:
- 由于该客户是现在在我的本地网络上,并且我的本地网络支持 mDNS,我尝试切换到
[server-name.local]
,并启动脚本。这按预期工作。 - 接下来,我尝试
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]
,以便缓存响应。繁荣。问题解决了。