rsync 경고는 억제하지만 오류는 억제하지 않습니다.

rsync 경고는 억제하지만 오류는 억제하지 않습니다.

rsync홈 디렉터리 없이 계정을 사용하여 한 서버에서 다른 서버로 전송합니다 .

rsync user@server:source target
Password:
Could not chdir to home directory /dev/null: Not a directory
bash: /dev/null/.bashrc: Ist kein
Verzeichnis

rsync성공한 것 같으니까 .경고하다대신 메시지실수이유를 설명하는 메시지rsync 실패.

rsync(간단한) 알 수 있는 방법이 있나요?오직인쇄 오류(있는 경우)실패?

답변1

Could not chdir to home directory소식 이라고 할 수 있죠실수.

rsync유사한 시나리오에서 볼 수 있듯이 이것은 기능이 아닙니다 ( nohome홈 디렉터리 없이 만든 계정이었습니다).

ssh nohome@localhost date
nohome@localhost's password:
Could not chdir to home directory /dev/null: Not a directory
Thu  1 Aug 07:02:05 UTC 2019

메시지를 억제하는 방법을 찾을 수 없습니다( ssh -qrsync -q다 관련 효과가 없습니다).

의 경우 rsync메시지도 표시되지 않습니다. 모든 항목이 성공적으로 전송되면 rsync홈 디렉터리가 누락되었는지 여부에 관계없이 종료 상태는 SUCCESS(0)입니다.

touch /tmp/x
rsync -av nohome@localhost:/tmp/x /tmp/y; echo Status=$?
nohome@localhost's password:
Could not chdir to home directory /dev/null: Not a directory
receiving incremental file list
x

sent 43 bytes  received 83 bytes  50.40 bytes/sec
total size is 0  speedup is 0.00
Status=0

답변2

글쎄, 방금 해결책을 찾았습니다.

if ! output=$(rsync user@server:source target 2>&1); then
  echo "$output"
fi

출력(stdout 및 stderr)은 변수에 저장되며 종료 코드가 0이 아닌 경우에만 인쇄됩니다.

더 좋은 방법이 있는지는 확실하지 않지만 이것이 나에게 확실히 효과적입니다.

배경

사용자는 실제로 컴퓨터 계정이고 실제 계정은 rsyncfile( )을 암호로 받아들이는 /etc/machine.secret래퍼 스크립트를 통해 호출 됩니다. 스크립트 자체가 실행되므로 cron문제가 발생할 경우에만 메일을 받을 수 있는 방법을 찾아야 합니다.

아무것도 하지 않는다는 것은 스크립트가 호출될 때마다 "오류" 이메일을 받는다는 것을 의미하고, 매우 간단한 일을 한다는 것은 2>/dev/null오류 이메일을 전혀 받지 않는다는 것을 의미하므로 특정 메시지를 필터링할 방법을 찾아야 합니다.

답변3

-q스위치를 사용해 보셨나요 ? 오류가 아닌 메시지를 억제합니다.

rsync -q user@server:source target

관련 정보