--ignore-missing-args

--ignore-missing-args

我正在对几个不同的系统执行如下命令:

$ rsync -a -v [email protected]:'/path/to/first/*.log path/to/second.txt' /dest/folder/0007/.

有时 *.log 不存在,这没问题,但 rsync 会产生以下错误:

receiving file list ... rsync: link_stat "/path/to/first/*.log" failed: No such file or directory (2)
done

有什么方法可以抑制这种情况吗?我能想到的唯一方法是使用包含和排除过滤器,但这对我来说似乎很麻烦。谢谢!

答案1

我认为这个问题的答案在这个答案中得到了最好的描述:

https://stackoverflow.com/a/27637277/1236128

--ignore-missing-args

不幸的是,只有更高版本才有此功能。我正在运行带有 rsync 3.0.9 的 RHEL 7,它似乎没有此选项。

答案2

澄清一下,您只是不想“看到”错误?对于这种情况,您可以重定向标准错误输出,但最终可能会错过您可能想要知道的更严重的错误。

重定向错误输出示例

rsync -a -v [email protected]:'/path/to/first/*.log path/to/second.txt' /dest/folder/0007/ 2>/dev/null

如果您只想忽略不存在的文件的错误,您无法更改 rsync *.log 过滤器,并且您想避免使用包含,那么您可以将其包装在脚本中以根据条件继续进行。

脚本示例

#!/bin/sh
# Script to Handle Rsync based on Log File Existence
if [ "$(ls -A /path/to/first/*.log > /dev/null > 2&1)" ]; then
     # Log Exists Use This Rsync
    rsync -a -v [email protected]:'/path/to/first/*.log path/to/second.txt' /dest/folder/0007/
else
    # Log Does Not Exist Use This Rsync
    rsync -a -v [email protected]:'path/to/second.txt' /dest/folder/0007/
fi

希望我能帮上忙。

相关内容