
기본적으로 원격 서버 간에 파일을 rsync하는 작은 스크립트가 있습니다. 인증을 위한 SSH 키가 생성되었습니다.
스크립트에는 이것만 존재합니다
rsync /root/Desktop/cpfies/files/*.xls user@host:root/Desktop/cpfies/moved
기본적으로 제가 만들고 싶은 것은 이 스크립트의 로그 방법입니다. 화려하거나 아무것도 아닙니다... 그냥... 연결이 끊어지고 파일이 전송되지 않으면 내 로그에 "파일이 전송되지 않았습니다. 연결"이라는 메시지가 표시됩니다. 확립되지 않았습니다" "
또한 파일이 전송된 경우 성공적으로 전송되었음을 로그에 표시합니다.
또는 호스트나 사용자가 잘못된 경우 내 로그에 표시됩니다.
감사와 안부 인사, Sagar Mandal
답변1
실패한 시도만 기록하려는 경우 $?
마지막 스크립트의 반환 값인 rsync 반환 값을 확인하여 얻을 수 있습니다. rsync
성공하면 0을 반환하고, 다른 오류에서는 0이 아닌 값을 반환합니다(https://lxadm.com/Rsync_exit_codes). 난 이걸 할거야:
#!/bin/bash
ret_text=$({rsync /root/Desktop/cpfies/files/*.xls user@host:root/Desktop/cpfies/moved} 2>&1)
if [ $? -ne 0 ]; then
echo rsync error code $? on $(date)
echo rsync output follows
echo $ret_text
fi
script
이를 실행할 때 출력을 유사한 로그 파일로 리디렉션하는 로그 파일에 넣거나 script >> log_file
스크립트를 호출하고 >> log_file
스크립트의 각 echo 명령 뒤에 추가할 수 있습니다.
성공적인 시도도 기록하고 싶다면
rsync /root/Desktop/cpfies/files/*.xls user@host:root/Desktop/cpfies/moved &>> log_file
또는
rsync --log-file=log_file /root/Desktop/cpfies/files/*.xls user@host:root/Desktop/cpfies/moved
-v
또한 또는 를 추가하여 rsync에서 생성되는 정보의 양을 늘리는 것이 좋습니다 -vv
. 더 많은 것을 사용할 수 있지만 -vvv
설명서에는 디버깅 목적으로 사용된다고 나와 있습니다.