linux備份腳本(以web爲例)

    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能夠試試查看日誌變化

wKiom1PPcIHxrnPpAALCrqAEP1Q163.jpg


wKioL1PPchHx_gigAAOFoQDEFmw595.jpg

結果代表此腳本能夠按時健康有效的運行。

相關文章
相關標籤/搜索