オルトプラスエンジニアの日常をお伝えします!

バックアップの中心で愛を叫ぶ

※このタイトルは ホッテントリメーカーで作られました。

こんにちは、id:iandoです。

業務かどうかに関わらず、バックアップって大事ですよね。 普段使う個人PCのバックアップはみなさんどうされているでしょうか?

NASなど使ったり、専用の仕組みでやってみたり、色々な方法があると思いますが、私が使っている方法の一つを今回はご紹介したいと思います。

Windows,Mac,Linuxの違いや、バックアップ先によって微妙に違いますが、以下のようなスクリプトを作って、定期的に実行するようにしています(以下の例はs3に転送する場合)。

#!/bin/sh
PASS=`cat /not_bak/.pass`
DIR=`mktemp -d /tmp/temp.XXXXXX`
DOMAIN="iando-bucket"

zip_and_sync () {
        DIRTMP=`mktemp -d /tmp/temp.XXXXXX`
        cp -R $2 $DIRTMP/
        find $DIRTMP/ -name '*' -type d -empty -print0 | xargs -0 rm -rf
        find $DIRTMP/ -name '*' -type f -empty -print0 | xargs -0 rm -rf

        zip -r "$DIR/$1" -P $PASS $DIRTMP
        rm -rf $DIRTMP
        s3cmd sync $DIR/$1 s3://$DOMAIN/bak/
        rm -rf $DIR/$1
}

zip_and_sync home_iando.zip "/home/iando"

rm -rf $DIR

Windowsの場合はcygwinなどからこのスクリプトを使って、cygdrive配下をまとめていたりしています。 ポイントは以下。

  • パスワード付き圧縮
    クラウドのストレージは認証があるとはいえ怖い気がするので、気休めかもしれないけどパスワード付きで圧縮しています(パスワードファイルは圧縮対象からはずす)。

  • サイズ0のファイル・ディレクトリを削除
    zipで圧縮いていざ必要になったときに解凍した際に、"zip inflating: blank error: invalid compressed data to inflate" と言われてしまうことがあったりするので、圧縮すべきディレクトリから削除しています。

いざバックアップから復元する際にできなかったりすると悲しいので、実際に復元可能かテストしてみることは大事だと思います。

この記事が少しでも参考になれば幸いです。よきバックアップライフを!