標籤:centos 通過計劃任務定時備份資料
Centos 通過計劃任務定時備份資料
今年公司買了一套OA產品,對於功能現在都還處在開發和設定階段,作為管理員的我,需要對每天的資料及對應的資料庫進行定期備份,因為OA產品是運行在Linux上的,所以我們需要Linux上配置shell指令碼,然後通過計劃任務來實現對資料的定時備份,對於相關指令碼內容見下即可,但是需求是需要對指定的目錄進行壓縮然以日期進行命名,最終移動到指定的路勁即可。對於linux上的計劃任務程式跟windows上的很相似,windows上我們可以直接運行taskschd.msc就可以開啟,然後建立任務嚮導即可,但是在linux上比windows上的操作更簡單,只需要串連對應的參數即可。linux上計劃任務的命令為crontab ,通過後面的參數即可配置;我們可以通過man crontab查看相關協助。
-e:編輯某個使用者的crontab檔案內容。如果不指定使用者,則表示編輯目前使用者的crontab檔案。-l:顯示某個使用者的crontab檔案內容,如果不指定使用者,則表示顯示目前使用者的crontab檔案內容。-r:從/var/spool/cron目錄中刪除某個使用者的crontab檔案,如果不指定使用者,則預設刪除目前使用者的crontab檔案。-i:在刪除使用者的crontab檔案時給確認提示。
同樣:crontal 的參數格式為 * * * * *
一個 * 一小時當中的第幾分鐘 0-59
第二個 * 一天當中的第幾個小時 0-23
第三個 * 一個月當中的第幾天 1-31
第四個 * 一年當中的第幾個月 1-12
第五個 * 一周當中的星期幾 1-7
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M00/84/6D/wKioL1eQeIiDab9qAABpOTSNdZY800.png-wh_500x0-wm_3-wmp_4-s_1231603257.png" title="1.png" alt="wKioL1eQeIiDab9qAABpOTSNdZY800.png-wh_50" />
配置介紹完了,我們就開始工作吧
我們通過ls –l查看當前的目錄結構
我們已經寫好指令碼了,該指令碼叫databackuper.sh,然後我們需要將/data目錄下的Weaver目錄資料壓縮備份到waver_back目錄中,然後以日期命名;
主要一定要在執行shell指令碼的時候給指令碼添加執行許可權;chmod +x databackuper.sh 添加執行許可權
我們在指令碼中定義兩個參數,$1 、$2,這樣定義的話就比較靈活,當有多個檔案需要備份的話,可以使用這樣的方式,然後在執行shell的時候,我們需要在shell指令碼後添加兩個參數,一個是源,一個目標路勁;
./databackuper.sh /DATA/WEAVER /DATA/WEAVER_BACKUP
#!/bin/bash SOURCE=$1 TARGET=$2 CPEXEC=$(which cp) MKDIREXEC=$(which mkdir) CURDATE=$(date +%Y-%m-%d) BAKDIRTMP=${SOURCE%*/} BAKDIRNAME=${BAKDIRTMP##*/}$CURDATE BASEDIR=${BAKDIRTMP%/*}if [ ! -d "$SOURCE" ]; then echo "$(date +%Y-%m-%d_%H:%M:%S) - The source $SOURCE is not existed you specified" >>/var/log/${BAKDIRTMP##*/}.log exit 2 fi if [ ! -d "$TARGET" ]; then echo "$(date +%Y-%m-%d_%H:%M:%S) - The target $TARGET is not existed you spec ified" >>/var/log/${BAKDIRTMP##*/}.log exit 22 fi# $MKDIREXEC -p $TARGET/$BAKDIR # $CPEXEC -rf $SOURCE/* $TARGET/$BAKDIR/cd $TARGET && tar zcf ${BAKDIRNAME}.tar.gz -C $BASEDIR ${BAKDIRTMP##*/}if [ "$?" -ne 0 ]; then echo "$(date +%Y-%m-%d_%H:%M:%S) - Backup directory: $SOURCE to $TARGET/${BAKDIRNAME}.tar.gz is failed" >>/var/log/${BAKDIRTMP##*/}.log else echo "$(date +%Y-%m-%d_%H:%M:%S) - Backup directory: $SOURCE to $TARGET/${BAKDIRNAME}.tar.gz is successful" >>/var/log/${BAKDIRTMP##*/}.log fi exit 0
上面的方式就是比較有擴充性,然後我們也可以直接修改變數
#!/bin/bash SOURCE=/DATA/WEAVER TARGET=/DATA/WEAVER_BACKUPCPEXEC=$(which cp) MKDIREXEC=$(which mkdir) CURDATE=$(date +%Y-%m-%d) BAKDIRTMP=${SOURCE%*/} BAKDIRNAME=${BAKDIRTMP##*/}$CURDATE BASEDIR=${BAKDIRTMP%/*}if [ ! -d "$SOURCE" ]; then echo "$(date +%Y-%m-%d_%H:%M:%S) - The source $SOURCE is not existed you specified" >>/var/log/${BAKDIRTMP##*/}.log exit 2 fiif [ ! -d "$TARGET" ]; then echo "$(date +%Y-%m-%d_%H:%M:%S) - The target $TARGET is not existed you spec ified" >>/var/log/${BAKDIRTMP##*/}.log exit 22 fi# $MKDIREXEC -p $TARGET/$BAKDIR # $CPEXEC -rf $SOURCE/* $TARGET/$BAKDIR/cd $TARGET && tar zcf ${BAKDIRNAME}.tar.gz -C $BASEDIR ${BAKDIRTMP##*/}if [ "$?" -ne 0 ]; then echo "$(date +%Y-%m-%d_%H:%M:%S) - Backup directory: $SOURCE to $TARGET/${BAKDIRNAME}.tar.gz is failed" >>/var/log/${BAKDIRTMP##*/}.log else echo "$(date +%Y-%m-%d_%H:%M:%S) - Backup directory: $SOURCE to $TARGET/${BAKDIRNAME}.tar.gz is successful" >>/var/log/${BAKDIRTMP##*/}.log fi exit 0
這樣的話,我們直接執行即可,就不用添加任何參數了
./databackuper.sh 執行即可;
然後我們定義計劃任務進行備份,我們準備每天晚上23:30進行備份一次
crontal –e30 23 * * * /root/DATA/databackuper-new.sh
每天晚上23:30 執行一次 /root/data/databackuper-new.sh 指令碼一次
650) this.width=650;" title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;margin:0px;padding-right:0px;" border="0" alt="image" src="http://s3.51cto.com/wyfs02/M00/84/6B/wKioL1eQY32jOrQYAAArOM7Tc6k028.png" height="161" />
本文出自 “高文龍” 部落格,請務必保留此出處http://gaowenlong.blog.51cto.com/451336/1828368
Centos 定時備份資料