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 -q
둘 rsync -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이 아닌 경우에만 인쇄됩니다.
더 좋은 방법이 있는지는 확실하지 않지만 이것이 나에게 확실히 효과적입니다.
배경
사용자는 실제로 컴퓨터 계정이고 실제 계정은 rsync
file( )을 암호로 받아들이는 /etc/machine.secret
래퍼 스크립트를 통해 호출 됩니다. 스크립트 자체가 실행되므로 cron
문제가 발생할 경우에만 메일을 받을 수 있는 방법을 찾아야 합니다.
아무것도 하지 않는다는 것은 스크립트가 호출될 때마다 "오류" 이메일을 받는다는 것을 의미하고, 매우 간단한 일을 한다는 것은 2>/dev/null
오류 이메일을 전혀 받지 않는다는 것을 의미하므로 특정 메시지를 필터링할 방법을 찾아야 합니다.
답변3
-q
스위치를 사용해 보셨나요 ? 오류가 아닌 메시지를 억제합니다.
rsync -q user@server:source target