MySQL、SVN、Tracをバックアップする(2)
運用しているサーバーの/hotcopy/ に保存されているファイル群を圧縮して/backupに保存します。
シェルスクリプトを作成します。
vi /root/backup.sh
下記内容を記述します。※参考URLhttp://centossrv.com/backup.shtml
まだ自分では確認してないので動かない場合は参考URLを見て適時修正してください><
#!/bin/bash BK_DIR=/backup BK_LOG=/var/log/backup.log mkdir -p $BK_DIR #--------------------------------------------------- # バックアップ保存世代数 # ※当日分を含めた過去分バックアップを保存する世代数 # ※過去分バックアップを保存しない場合は1を指定する #--------------------------------------------------- BK_GEN=8 #--------------------------------------------------- # 暗号化・復号化パスフレーズ # ※指定がないときは暗号化しない #--------------------------------------------------- PASS='' #--------------------------------------------------- # バックアップログファイル名 #--------------------------------------------------- BK_LOG=/var/log/backup.log #--------------------------------------------------- # 前回バックアップをリネーム #--------------------------------------------------- cd $BK_DIR OLD_BK_FILE=`ls backup.tar.bz2* 2>/dev/null` if [ -f $OLDBACKUPFILE ]; then TIMESTAMP=`ls --full-time $OLDBACKUPFILE|awk '{print $6}'|tr -d -` mv $BACKUPDIR/$OLDBACKUPFILE $BACKUPDIR/${TIMESTAMP}$OLDBACKUPFILE > /dev/null 2>&1 fi #--------------------------------------------------- # バックアップログファイルを新しく作り直す #--------------------------------------------------- rm -f $BK_LOG touch $BK_LOG chmod 400 $BK_LOG #--------------------------------------------------- # バックアップ実行 #--------------------------------------------------- echo "`date` backup start" >> $BK_LOG #--------------------------------------------------- # 圧縮 #--------------------------------------------------- # c: create archive # j: bzip2 で tar.biz2ファイルを作成 # v: verbose 作成・抽出時にファイルのリストを画面出力する # f: file 元々テープメディアのコマンドなので要指定 # P: パス名を保持 #---------------------------------------------------- tar cjvfP $BACKUPDIR/backup.tar.bz2 -T /hotcopy >> $BK_LOG 2>&1 ### エラー検出時 code=$? if [ $code -ne 0 ]; then cat $BK_LOG | mail -s "BACKUP NG CODE IS $code" root rm -f $BK_DIR/backup.tar.bz2 error_exit fi #--------------------------------------------------- # バックアップ完了 #--------------------------------------------------- echo "`date` backup end" >> $BK_LOG #--------------------------------------------------- # バックアップ保存世代を超えた古いバックアップを削除 #---------------------------------------------------- if [ $(ls $BK_DIR/*backup.tar.bz2*|wc -l) -gt $BK_GEN ]; then OLD_BK_CNT=`expr $(ls $BACKUPDIR/*backup.tar.bz2*|wc -l) - $BACKUPGEN` for file in `ls -t $BK_DIR/*backup.tar.bz2*|tail -n $OLD_BK_CNT` do rm -f $file done fi
これをcronに登録しておき、あとはこのディレクトリとWndows側をcwRsyncなどで同期をとればOKです。