rsync 경고 억제: 일부 파일이 전송되기 전에 사라집니다.

rsync 경고 억제: 일부 파일이 전송되기 전에 사라집니다.

실행 중인 Postfix 및 Courier 서버 파일을 백업할 때 다음과 같은 경고가 많이 표시됩니다.

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

rsyncCron에서 실행할 때 이러한 경고를 표시하지 않으려면 어떻게 해야 합니까 /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

관련 정보