cron
백업이 완료된 후 이메일 본문에 간단한 메시지를 제공하는 다음 한 줄 명령을 설정했습니다 (@steeldriver에게 감사드립니다).
tar -cpzf /home/user/backups/backup_files.tar.gz /home/user/public_html;
case $? in 0) echo "Files successfully backed up at $(date)" ;; *) echo "Backup failed" ;; esac
문제는 전체 명령줄이 내 이메일의 제목 줄에 출력된다는 것입니다. 이는 이메일 백업 전체에 걸쳐 전체 경로를 제공하므로 이상적이지 않습니다. 주제가 "백업 사용자"와 같이 간단하게 언급되었으면 좋겠습니다.
기존 명령을 방해하지 않고 이를 수행할 수 있는 방법이 있습니까? 감사해요.
답변1
기본 메일 하위 시스템을 사용할 필요는 없으며 cron
직접 선언할 수 있습니다. 이 내용으로 한 줄 항목을 만듭니다 cron
(가독성을 높이기 위해 세 줄로 나누었습니다).
if tar czf /home/user/backups/backup_files.tar.gz -C / home/user/public_html;
then echo "Files successfully backed up at $(date)";
else echo 'Backup failed'; fi | mail -s 'Backup user' root
몇 가지 메모
- 아카이브를 생성할 때 플래그가 무시되므로
-p
플래그 를 제거했습니다.tar
- 백업 소스가 상대 파일이 되도록 디렉터리를 변경하는 플래그를 추가했습니다
-C
. 그러면tar: Removing leading `/' from member names
경고 메시지가 중지됩니다. - 귀하의 사용자 계정에 대한 로컬 이메일을 받을 수 있는 기능을 제공했지만
root
귀하의 시스템이 웹 이메일을 처리하도록 설정되어 있는 경우 이를 접속 가능한 어떤 주소로든 바꿀 수 있습니다 - 개인적으로 저는 그것을 스크립트에 넣고 거기에서 해당 스크립트를 호출하겠습니다
cron
. 이렇게 하면 스크립트 레이아웃을 더 쉽게 읽을 수 있으며cron
줄 제한이나 기타 문제를 일으키지 않고 필요한 만큼 복잡성(복잡성!)을 추가할 수 있습니다 .