2012年7月18日 星期三
Unison file-synchronization tool SOP
Unison file-synchronization tool SOP
1. 下載相關套件 (請注意OS版本)
OCaml compiler : http://caml.inria.fr/download.en.html
Unison : http://www.cis.upenn.edu/~bcpierce/unison/download.html
2. 安裝套件 (unison若為使用同一份source,請先執行make clean)
OCaml compiler : 直接RPM安裝即可
Unison : 解TAR之後修改Makefile下的INSTALLDIR = /usr/local/unison/bin/
修改完後存檔離開,先建立資料夾mkdir –p /usr/local/unison/bin/,建立資料夾後直接make;make install
※ /usr/local/unison/bin/資料夾要自行手動建立,程式不會自動產生,注意Makefile的路徑後面不要有空格,否則make install時會出現錯誤,檢查方式為/usr/local/unison/bin/下若只有一個檔案,表示Makefile的路徑有問題,造成檔案無法正常複製到路徑下
3. copy script範本並修改
Script內容 (注意紅字部分的修改,每個網站不同)
#!/bin/bash
DATE=`date +'%Y%m%d'`
TIME=`date +'%H%M'`
HOSTNAME=`hostname -a | tr -d " "`
REMOTE_DIR=/pda
LOCALHD=/backuphd/pdawb
HOME=/root
LOG=/var/log/unison.log
SNAPSHOT=/backuphd/pdawb/.snapshot/$DATE/$TIME
UNISON=/usr/local/unison/bin/unison
OLDDATE=`date -d '7 day ago' +%Y%m%d`
OLDSNAPSHOT=/backuphd/pdawb/.snapshot/$OLDDATE
DU=`du -s -h $LOCALHD`
##### Create Snapshot Directory
if [ ! -d "$SNAPSHOT" ];then
mkdir -p $SNAPSHOT
fi
##### Create Snapshot
TIME=`date +'%Y%m%d %H:%M:%S'`
echo "Start Create Snapshot at $TIME" > $LOG
cp -apl $LOCALHD/* $SNAPSHOT
TIME=`date +'%Y%m%d %H:%M:%S'`
echo " " >> $LOG
echo "Create Snapshot Done at $TIME" >> $LOG
echo " " >> $LOG
##### run unison
echo "Change File List: " >> $LOG
$UNISON -silent -batch -owner -group -times $REMOTE_DIR $LOCALHD -force $REMOTE_DIR -logfile $LOG >> /var/log/messages 2>&1
echo " " >> $LOG
#####delete old snapshut
rm -rf $OLDSNAPSHOT
##### check backup status
DATE=`date +'%Y%m%d'`
TIME=`date +'%Y%m%d %H:%M:%S'`
TIME1=`date +'%H%M'`
FOLDERPATH=/backuphd/pdawb/.snapshot/$DATE
FOLDERLIST=`ls -lh /backuphd/pdawb/.snapshot/$DATE/ | awk '{print $6,$7,$8,$9}'`
echo "Folder List: " >> $LOG
ls -lh $LOCALHD | awk '{print $5"\t"$6"\t"$7"\t"$8"\t"$9}' >> $LOG
echo " " >> $LOG
echo "Total Usage: $DU" >> $LOG
echo " " >> $LOG
echo "Unison Done at $TIME" >> $LOG
echo " " >> $LOG
echo "Check Folder Path : $FOLDERPATH" >> $LOG
echo " " >> $LOG
echo "Check Folder List :" >> $LOG
echo "$FOLDERLIST" >> $LOG
##### mail to
HOURSET=`date +'%H'`
TIME=`date +'%Y%m%d-%H:%M:%S'`
MAILLIST= "XXXX@XXX.XXX"
if [ $HOURSET -eq 4 ] || [ $HOURSET -eq 8 ] || [ $HOURSET -eq 12 ] || [ $HOURSET -eq 16 ] || [ $HOURSET -eq 20 ] || [ $HOURSET -eq 00 ]; then
mail -s ''$HOSTNAME' unison Backup Status-'$TIME'' $MAILLIST < $LOG
fi
修改完畢存檔後建立備份資料夾 mkdir /backuphd/pdawb
並手動執行一次unison,讓/root/.unison/default.prf產生
執行完畢之後,編輯/root/.unison/default.prf,加入要排除的資料夾
ex:
ignore = Name {.snapshot}
ignore = Name {public}
修改完畢後,手動執行一次unison,做第一次同步
/usr/local/unison/bin/unison -batch -owner -group -times /pda /backuphd/pdawb -force /pda -logfile /var/log/unison.log
語法:
/usr/local/unison/bin/unison -batch -owner -group -times /pda /backuphd/pdawb -force /pda -logfile /var/log/unison.log
Unison command [預設回應] [同步onwer權限] [同步group權限] [同步檔案時間] [遠端資料夾] [目的資料夾] [強制設定來源] [log檔案路徑]
加入crontab,重啟service
注意事項:
1. 若不指定執行時的profile,unison預設會採用/root/.unison/default.prf當成profile,若有多個資料夾要備份,可編輯不同的profile,執行時加入profile name即可,此處以managermx為範例說明,請注意紅字部分
#!/bin/bash
DATE=`date +'%Y%m%d'`
TIME=`date +'%H%M'`
HOSTNAME=`hostname -a | tr -d " "`
REMOTE_DIR=/manager
LOCALHD=/backuphd/manager
HOME=/root
PROFILE=manager.prf
LOG=/var/log/unison-manager.log
SNAPSHOT=/backuphd/manager/.snapshot/$DATE/$TIME
UNISON=/usr/local/unison/bin/unison
OLDDATE=`date -d '7 day ago' +%Y%m%d`
OLDSNAPSHOT=/backuphd/manager/.snapshot/$OLDDATE
DU=`du -s -h $LOCALHD`
##### Create Snapshot Directory
if [ ! -d "$SNAPSHOT" ];then
mkdir -p $SNAPSHOT
fi
##### Create Snapshot
TIME=`date +'%Y%m%d %H:%M:%S'`
echo "Start Create Snapshot at $TIME" > $LOG
cp -apl $LOCALHD/* $SNAPSHOT
TIME=`date +'%Y%m%d %H:%M:%S'`
echo " " >> $LOG
echo "Create Snapshot Done at $TIME" >> $LOG
echo " " >> $LOG
##### run unison
echo "Change File List: " >> $LOG
$UNISON $PROFILE -silent -batch -owner -group -times $REMOTE_DIR $LOCALHD -force $REMOTE_DIR -logfile $LOG >> /var/log/messages 2>&1
echo " " >> $LOG
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言