バックアップ

dar

ダー。 差分、増分に対応した細かい設定が可能なバックアップ。

やりたいこと

  • 月曜日にフルバックアップ、火〜金は増分バックアップ
  • 時間は朝7時半ぐらいから。会社いく時間ぐらいから始まってつく頃には終わってる感じで。
  • 土日はバックアップはお休み。寝てて朝うるさくなるといやだから
  • バックアップ対象は/var/www,/etc,ホームディレクトリ以下。
  • ホームディレクトリのDesktopとDownloadディレクトリはバックアップからのぞく。
  • 画像とか圧縮ファイルは圧縮しても意味ないので圧縮対象からのぞく。
  • バックアップした物をlftpでバックアップ用のサーバにアップロード

~にdar.sh(てきとう)って下の内容のファイルを作る。

#!/bin/sh                                                                                                                                   
 
DIR=/home/backup
BACKUP_SERVER='ftp://user:passwd@backupserver_host.jp/'
EX='-P home/user/Desktop/ -P home/user/Download/'
CAT='-G /home/backup/backup_catalog'
FILE=$DIR/`date -I`
BACKUP='-g etc/ -g home/user/ -g var/www/'
OP="-y -Z \"*.gz\" -Z \"*.Z\" -Z \"*.bz2\" -Z \"*.tgz\" \                                                                                   
-Z \"*.lzh\" -Z \"*.zip\" -Z \"*.rar\" \                                                                                                    
-Z \"*.jpg\" -Z \"*.JPG\" -Z \"*.JPEG\" \                                                                                                   
-Z \"*.gif\" -Z \"*.GIF\" -Z \"*.png\" -Z \"*.PNG\" \                                                                                       
-Z \"*.mpg\" -Z \"*.MPG\" -Z \"*.avi\" -Z \"*.MPG\" -Z \"*.m4p\" \                                                                          
-Z \"*.mpeg\" -Z \"*.MPEG\" -Z \"*.mp3\" -Z \"*.mov\" -Z \"*.wma\""
 
case X"$1" in
"X-f")
rm -R $DIR
mkdir $DIR
dar $OP -R / -c $FILE-full $BACKUP $EX $CAT
 
#lftp upload                                                                                                                                
lftp ${BACKUP_SERVER} <<EOF                                                                                                                                                                                                                                                                 
cd backup/server                                                                                                                            
lcd /home/backup                                                                                                                            
mirror -R -e                                                                                                                                
bye                                                                                                                                         
EOF                                                                                                                                         
 
;;
"X-i")
YES=`date -I -d "1 day ago"`
 
if [ -e "$FILE-inc.1.dar" ]; then
    rm $FILE-inc.1.dar
fi
 
if [ -e "$DIR/$YES-full.1.dar" ]; then
 
    dar $OP -R / -c $FILE-inc $BACKUP -A $DIR/$YES-full $EX
    FILENAME=`date -I`-inc.1.dar
 
elif [ -e "$DIR/$YES-inc.1.dar" ]; then
 
    dar $OP -R / -c $FILE-inc $BACKUP -A $DIR/$YES-inc $EX
    FILENAME=`date -I`-inc.1.dar
 
fi
 
#lftp upload                                                                                                                                
 
if [ $FILENAME ]; then
 
lftp${BACKUP_SERVER}<<EOF                                                                                                                                                                                                                                                                  
cd backup/server                                                                                                                            
lcd /home/backup                                                                                                                            
put ${FILENAME}                                                                                                                             
bye                                                                                                                                         
EOF                                                                                                                                         
 
fi
 
;;
esac

crontab

30 07 * * 1 /root/dar.sh -f > /dev/null 2>&1
30 07 * * 2-5 /root/dar.sh -i > /dev/null 2>&1

自分はバックアップ用サーバにdiriveeを利用しています。
lftpの設定はこっち

コマンド

コマンド 動作
-g バックアップするディレクトリを指定(必須?)
-R path このパスをルートディレクトリとする(必須)
-c ファイル名を指定して、バックアップファイルを作る
-x バックアップから展開。ファイル名を指定。
-l バックアップされたリストを表示。
-A 差分バックアップなどの時に参照するファイルを指定
-as -lでリスト表示時に更新されたファイルだけ表示。ファイル名の後に使う。
-t バックアップファイルが壊れていないかテスト
-d バックアップファイルとバックアップ元との比較
-z[level] gzipで圧縮します。デフォルト圧縮レベルは9
-y[level] bip2で圧縮します。デフォルト圧縮レベルは9
-Z 圧縮時、圧縮しないファイルを指定します
-m 圧縮をするファイルの最低サイズを指定。デフォルトは100バイト
-s 指定したサイズでファイルを分割します。
-S 分割するとき、最初の分割ファイルのサイズを指定
-X 除外するファイルを指定
-P 除外するディレクトリを指定
-D 除外した結果空になったディレクトリをバックアップ
-G 指定したファイルにバックアップ情報、カタログデータを書き出す
other/backup.txt · 最終更新: 2009/09/19 05:54 (外部編集)