簡體   English   中英

Mac / UNIX Shell腳本備份我們的Web服務器和MySQL數據庫時的錯誤處理

[英]Error Handling For A Mac/UNIX Shell Script to Backup Our Web Servers and MySQL Databases

我為自己編寫了一個Shell腳本來備份我們的Web服務器並使其正常運行。 它導航到備份目錄,執行rsync,mysqldump,並將其全部提交到git存儲庫進行版本控制,然后將其推送到我們的遠程git服務器。 我了解到編寫計划的UNIX腳本有很多陷阱,所以我想知道是否遺漏了任何東西或使自己陷入災難。 如果整個過程中有任何錯誤,我如何通過電子郵件發送給我?

#!/bin/bash

#Exit on any error
set -e

LOGFILE=~/backups/web_backup-$(date +"%m.%d.%Y_%H.%M.%S").log
touch $LOGFILE
echo "Backup started for "$(date +"%m.%d.%Y_%H.%M.%S") | tee -a $LOGFILE

############################################################
###### BACKUP WEBSITE
############################################################


echo "Backing up Website..." 2>&1 | tee -a $LOGFILE
cd ~/backups/example.org
if [ "$?" != "0" ]; then
    echo "Cannot change directory!" 1>&2
    exit 1
fi


rsync -Pav --size-only --delete --filter='P .git' --filter='P example.com.sql' backups@example.com:/path/to/example.org/ ~/backups/example.org/ 2>&1 | tee -a $LOGFILE

echo "Backing up Example.com DB..." 2>&1 | tee -a $LOGFILE

ssh backups@example.com "mysqldump -u user -hlocalhost -ppassword dbname > example.com.sql 


echo "Adding files to Git Repository..." 2>&1 | tee -a $LOGFILE 
git add . 2>&1 | tee -a $LOGFILE| tee -a $LOGFILE

echo "Commiting files to Git Repository..." 2>&1 | tee -a $LOGFILE 
git commit -m "Backup as of "$(date +"%m.%d.%Y_%H.%M.%S") 2>&1 | tee -a $LOGFILE

echo "Pusing Git Repo to Remote Location..." 2>&1 | tee -a $LOGFILE 
git push origin master 2>&1 | tee -a $LOGFILE


echo "Finished backing up Website..." 2>&1 | tee -a $LOGFILE

echo "Backup Finished for "$(date +"%m.%d.%Y_%H.%M.%S")
exit

在腳本中聲明一個報告文件,並將所有輸出定向到該文件。 檢查copy和rsynch命令的退出狀態($?),如果退出狀態不等於零,則使用什么,然后使用mail命令將郵件發送到帶有報告文件的地址

mail -s "subject " -c "cc address" "to-address" < reportfile name

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM