ダー。 差分、増分に対応した細かい設定が可能なバックアップ。
~に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
30 07 * * 1 /root/dar.sh -f > /dev/null 2>&1 30 07 * * 2-5 /root/dar.sh -i > /dev/null 2>&1
コマンド | 動作 |
---|---|
-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 | 指定したファイルにバックアップ情報、カタログデータを書き出す |