linux服務器中要按期對某一塊東西自動備份頗有必要,這時就要用到shell腳原本寫啦。這裏以備份Apache服務器爲例,爲了方便演練,這裏用的Apache是用yun安裝的,若是想對源碼安裝的Apache作自動備份,只需改動相應代碼便可。html
[root@localhost ~]# vi bak_web1.shlinux
#!/bin/bashweb
#name:bak_web.shshell
#description:this is used to back up web script數據庫
mypath="/var/bak_web" ///將備份出來的東西放在指定目錄下,這個目錄能夠是smb分享出來的,也能夠是創建在lvm上的bash
mylog="/var/log/weblog.txt" ///將每次備份作一次記錄,將每次記錄都集中保存在這個指定的文件下(也就是日誌),這裏的日誌目錄以及備份目錄都是本身根據實際指定的。服務器
time=`date +%Y-%m-%d-%H:%M` ///定義每次執行備份要用到的時間變量ide
if [ ! -d "$mypath" ];then ///判斷備份目錄是否存在,若是不存在就建立這個目錄this
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日誌文件中都會有新的內容增長。
[root@localhost ~]# crontab -e
*/1 * * * * bash /root/bak_web1.sh
用tail -f /var/log/weblog.txt能夠試試查看日誌變化
結果代表此腳本能夠按時健康有效的運行。