기본적으로 원격 서버 간에 파일을 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
하지만 설명서에는 디버깅 목적으로 사용된다고 나와 있습니다.