실행중인 Postfix 및 Courier 서버 파일을 백업 할 때 다음과 같은 많은 경고가 표시됩니다.
file has vanished: /var/kunden/mail/username/name@mymail.de/tmp/courier.lock
rsync
Cron에서 실행할 때 이러한 경고를 어떻게 억제 /usr/bin/rsnapshot hourly
합니까?
어떻게 든 그 먼지를 제외시킬 수 있습니까?
/var/kunden/mail/*/*/tmp/
tmp
폴더 예를 들어, 깊은뿐만 아니라 수 있습니다 :
file has vanished: /var/kunden/mail/username/name@mymail.de/.Presse/tmp/1353871473.M716135P32214_imapuid_36.test.de
file has vanished: /var/kunden/mail/username/name@mymail.de/.Presse/tmp/courier.lock
답변
rsync
의 제외 스위치 ( --exclude
)를 사용할 수 있습니다 .
$ rsync -avz --exclude '**/tmp/' source/ destination/
이 방법으로 지정 --exclude '**/tmp/'
하면 문자열을 포함하는 모든 경로가 무시됩니다 /tmp/
. 이 인수에 패턴을 제공 할 수도 있습니다.
예
$ rsync -avz --exclude '/path/to/*/tmp/' source/ destination/
다음 형식의 경로를 제외합니다 /path/to/*/tmp/
..
답변
불행히도 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- 사라짐; hb = HEAD
@kenorb 및 @ gilles-quenot이 말한 것과 매우 유사합니다.
답변
그 이유는 rsync가 전송할 파일 목록을 작성하는 동안 이러한 파일이 존재하지만 전송하기 전에 제거 된 것입니다.
오류가 아닌 경고 마사지입니다. 그러나 이러한 파일이 삭제 된 이유를 찾아보아야합니다. 중요 할 수 있습니다.
이 경고를 무시하려면 위의 질문과 같이 –exclude 옵션을 사용하거나 -ignore-missing-args
rsync 옵션을 사용 하면 rsync가 사라진 파일을 무시합니다.
--ignore-missing-args ignore missing source args without error
아마 도움이 될 수 있습니다.
답변
오류는 rsync
전송할 목록을 작성하는 동안 기존 파일을 더 이상 찾을 수 없음을 의미합니다 . 이러한 사라진 파일 오류는 파일이 처음에 발견되어 나중에 더 이상 존재하지 않을 때 발생합니다. 어떤 경우에는 소스 파일이 손상되었거나 이름에 유효하지 않은 문자가있는 경우에도 발생합니다 ( fsck
권장).
기본적으로 이것은 오류가 아니라 경고이므로 각 대상 파일의 상태는 실행 중에 해당 소스 파일의 상태를 반영하므로 걱정할 필요가 없습니다.
종료 값으로 인해 문제점이 발생하는 경우 0이 아닌 경우 다음 랩퍼 스크립트 ( source ) 로 해결할 수 있습니다 .
#!/bin/bash
(rsync "$@"; if [ $? == 24 ]; then exit 0; else exit $?; fi) 2>&1 | grep -v 'vanished'
또는 다음 해결 방법 스크립트 ( source )를 사용하십시오.
#!/bin/sh
OUT=`/usr/bin/snapback2 2>&1`
RET=$?
if [ "$RET" != "23" -a "$RET" != "0" -a "$RET" != 24 ]; then
echo "$OUT"
exit $RET
fi
rsync가 실패하면 기본적으로 rsync와 동일한 오류 코드로 존재합니다.
이 더 설명되어 있습니다 : 버그 3653 -은 “사라진 파일”경고에 대한 필요성을 절감
답변
또는 단순히 (현대 배쉬로 ) :
#!/bin/bash
/usr/bin/rsync "$@" 2> >(grep -Ev '(file has |rsync warning: some files )vanished')
ret=$?
((ret==24)) && exit 0 || exit $ret
답변
내 대답은 특별한 유스 케이스 일 수 있지만 주목할 가치가 있다고 생각하여 사람들 이이 사건에 해당하더라도 데이터를 잃지 않습니다.
rsync를 통해 드라이브를 정기적으로 백업하는 동안 여러 파일에 대한 메시지가 나타납니다.
디스크에서 시스템 검사를 수행했는데 드라이브에 문제 (할당 / 파일 손상 등)가 있으며 백업 + 복원 + 재 포맷을 권장했습니다.
따라서 메시지를 표시하지 않거나 무시하기 전에 안전을 위해 드라이브에서 상태 점검을 실행하는 것이 좋습니다.