如何让rsync忽略丢失的文件?


9

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

$ rsync -a -v foo@machine.company.com:'/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

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

Answers:



2

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

重定向错误输出示例

rsync -a -v foo@machine.company.com:'/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 foo@machine.company.com:'/path/to/first/*.log path/to/second.txt' /dest/folder/0007/
else
    # Log Does Not Exist Use This Rsync
    rsync -a -v foo@machine.company.com:'path/to/second.txt' /dest/folder/0007/
fi

希望我能有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.