標籤:shell指令碼自動備份apache
linux伺服器中要定期對某一塊東西自動備份很有必要,這時就要用到shell指令碼來寫啦。這裡以備份Apache伺服器為例,為了方便演練,這裡用的Apache是用yun安裝的,如果想對源碼安裝的Apache做自動備份,只需改動相應代碼即可。
[[email protected] ~]# vi bak_web1.sh
#!/bin/bash
#name:bak_web.sh
#description:this is used to back up web script
mypath="/var/bak_web" ///將備份出來的東西放在指定目錄下,這個目錄可以是smb分享出來的,也可以是建立在lvm上的
mylog="/var/log/weblog.txt" ///將每次備份做一次記錄,將每次記錄都集中儲存在這個指定的檔案下(也就是日誌),這裡的日誌目錄以及備份目錄都是自己根據實際指定的。
time=`date +%Y-%m-%d-%H:%M` ///定義每次執行備份要用到的時間變數
if [ ! -d "$mypath" ];then ///判斷備份目錄是否存在,如果不存在就建立這個目錄
mkdir "$mypath"
fi
mkdir -p $mypath/$time/conf ///分別建立相應要備份的內容的目錄,為的是便於管理
mkdir -p $mypath/$time/web
cd /etc/httpd/conf/
tar zcf $mypath/$time/conf/httpd.conf.tar.gz ./httpd.conf ///將Apache的設定檔打包壓縮,取名為httpd.conf.tar.gz,放在$mypath/$time/conf目錄下
ret=$?
if [ $ret -eq 0 ];then ///判斷上面的打包壓縮動作是否做成功了,如果做成功了,就追加寫一條“成功”的記錄,否則寫一條“失敗”的記錄
echo "At $time tar htpd.conf.tar.gz successed" >> $mylog
else
echo "At $time tar httpd.conf.tar.gz failed" >> $mylog
fi
cd /var/www/
tar zcf $mypath/$time/web/html.tar.gz ./html ///將Apache的根目錄下的各檔案打包壓縮,取名為html.tar.gz,放在$mypath/$time/web目錄下,類似的還可以備份資料庫db的
ret=$?
if [ $ret -eq 0 ];then ///判斷上面的對Apache根目錄打包壓縮是否做成功了,如果做成功了就追加一條“成功”記錄到$mylog,否則寫一條“失敗”記錄
echo "At $time tar html.tar.gz successed" >> $mylog
else
echo "At $time tar html.tar.gz failed" >> $mylog
fi
指令碼到這裡完成,用bash bak_web1.sh執行以下,發現在/var/bak_web/下產生了新的內容,同時在/var/log/weblog.txt記錄檔中會有新的記錄。
將該指令碼添加到crontab下,讓其每隔一定時間自動執行一次。我這裡設定的是每隔1分鐘執行一次,指令碼放在/root/目錄下,指令碼沒執行一次,/var/bak_web/目錄下以及/var/log/weblog.txt記錄檔中都會有新的內容增加。
[[email protected] ~]# crontab -e
*/1 * * * * bash /root/bak_web1.sh
用tail -f /var/log/weblog.txt可以試試查看日誌變化
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/40/CF/wKiom1PPcIHxrnPpAALCrqAEP1Q163.jpg" title="web.jpg" alt="wKiom1PPcIHxrnPpAALCrqAEP1Q163.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/40/D0/wKioL1PPchHx_gigAAOFoQDEFmw595.jpg" title="web2.jpg" alt="wKioL1PPchHx_gigAAOFoQDEFmw595.jpg" />
結果表明此指令碼可以按時健康有效運行。
本文出自 “個人感受” 部落格,謝絕轉載!
linux備份指令碼(以web為例)