내 사이트에서 매주 백업을 수행하고 제대로 작동하는 cron 작업(자습서 참조)이 있습니다.
#!/bin/bash
NOW=$(date +"%Y-%m-%d-%H%M")
FILE="mysite.com.$NOW.tar"
BACKUP_DIR="/home/user/backups/"
WWW_DIR="/home/user/public_html/"
DB_USER="my_site_db_username"
DB_PASS="password"
DB_NAME="mysite_dn_name"
DB_FILE="mysite.com.$NOW.sql"
WWW_TRANSFORM='s,^home/username/public_html,www,'
DB_TRANSFORM='s,^home/username/backups,database,'
tar -cvf $BACKUP_DIR/$FILE --transform $WWW_TRANSFORM $WWW_DIR
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/$DB_FILE
tar --append --file=$BACKUP_DIR/$FILE --transform $DB_TRANSFORM $BACKUP_DIR/$DB_FILE
rm $BACKUP_DIR/$DB_FILE
gzip -9 $BACKUP_DIR/$FILE
질문은 백업이 완료된 후 나에게 이메일을 보내는 방법을 알려줄 수 있는 사람이 있습니까?
Bash를 처음 사용하는데 무엇을 하고 있는지 잘 모르겠습니다.
답변1
crontab 파일을 편집하고 다음을 추가하세요.
MAILTO=your.email@your_provider.com
스크립트 끝에 다음을 추가합니다.
echo 'backup finished', $FILE
cron
명령 실행의 모든 출력은 일반적으로 각 이메일과 함께 전송됩니다. 귀하의 스크립트가 자동으로 실행되는 것으로 나타나 이메일이 없습니다.
MAILTO를 추가하지 않으면 crontab을 실행하는 사용자에게 메일이 전송됩니다. IMHO 이를 명시적으로 명시하는 것이 좋습니다.
답변2
Bash 스크립트 끝에 다음 줄을 추가할 수 있습니다.
echo -e "백업 보고서 보내기:\n $DB_NAME 및 $FILE 백업 완료" mutt -s "$NOW 백업 보고서" |