我在python中开发一个可以从多台机器上收集日志的脚本。我正在使用rsync。但这是一个问题。我有多个服务的日志,如下所示:
service1.log
service2.log
service3.log
... and so on
此文件和文件夹的路径在代码中指定。但有时候,当某些日志文件不存在时,我会陷入困境。并且rsync没有成功完成。
如何跳过源计算机上不存在的文件?
附:我使用saltstack来统治机器,所以我打电话给:
__salt__['cmd.retcode']('rsync -a file1 file2...')
答案 0 :(得分:15)
使用--ignore-missing-args
:
版本3.1.0手册页说,
- 忽略缺失-ARGS
When rsync is first processing the explicitly requested source files (e.g. command-line arguments or --files-from entries), it is normally an error if the file cannot be found. This option suppresses that error, and does not try to transfer the file. This does not affect subsequent vanished-file errors if a file was initially found to be present and later is no longer there.
例如:
% rsync --version
rsync version 3.1.0 protocol version 31
% rsync bogusfile dest
rsync: link_stat "/tmp/bogusfile" failed: No such file or directory (2)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.0]
% rsync --ignore-missing-args bogusfile dest
# <no error>
版本3.06和3.1.0之间添加了--ignore-missing-args
选项。
online version 3.06 rsync man page没有提到它。但the git repository表示此选项已于2009年添加。