抑制 rsync 警告:某些文件在传输之前就消失了

抑制 rsync 警告:某些文件在传输之前就消失了

备份正在运行的 Postfix 和 Courier 服务器文件时,我收到大量警告,例如:

file has vanished: /var/kunden/mail/username/[email protected]/tmp/courier.lock

rsync从 Cron 运行时如何抑制这些警告/usr/bin/rsnapshot hourly

我可以以某种方式排除这些目录吗?

/var/kunden/mail/*/*/tmp/

tmp文件夹也可以更深,例如:

file has vanished: /var/kunden/mail/username/[email protected]/.Presse/tmp/1353871473.M716135P32214_imapuid_36.test.de
file has vanished: /var/kunden/mail/username/[email protected]/.Presse/tmp/courier.lock

答案1

不幸的是,与 SWdream 解决方案中描述的不同,--ignore-missing-args它对消失的文件没有影响。它只会忽略不存在的源参数。

man rsync

  --ignore-missing-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 源存储库中的此脚本: https://git.samba.org/?p=rsync.git;a=blob_plain;f=support/rsync-no-vanished;hb=HEAD

这与@kenorb 和@gilles-quenot 所说的非常相似。

答案2

原因是这些文件在 rsync 构建要传输的文件列表时存在,但在传输之前被删除。

这是警告消息,而不是错误。但是,您应该尝试找出这些文件被删除的原因,这可能很重要。

要忽略此警告,您可以使用 --exclude 选项,如上面的问题或使用-ignore-missing-argsrsync 选项,它使 rsync 忽略消失的文件: --ignore-missing-args ignore missing source args without error 它可能有帮助。

答案3

您可以使用rsync的排除开关 ( --exclude):

$ rsync -avz --exclude '**/tmp/' source/ destination/

指定这种方式--exclude '**/tmp/'将忽略任何包含字符串的路径/tmp/。您也可以为此参数提供模式。

例子

$ rsync -avz --exclude '/path/to/*/tmp/' source/ destination/

将排除以下形式的路径:/path/to/*/tmp/

答案4

或者简单地(用现代的):

#!/bin/bash

/usr/bin/rsync "$@" 2> >(grep -Ev '(file has |rsync warning: some files )vanished')
ret=$?
((ret==24)) && exit 0 || exit $ret

相关内容