duplicityはLinuxで差分バックアップを取るソフトです。
最近はクラウドストレージにも対応していて、Amazon S3にバックアップが置けます。
ここでGlacierを使うと容量料金が下がりますが、バックアップのバケット全体にGlacierに移動するLifecycleを設定してしまうと、メタデータまでGlacierに移動されてしまいます。次回のバックアップ時に、メタデータ取り出しのためにバックアップ開始まで何時間もかかる羽目になります。
容量を喰わないメタデータはS3のままで、データのみをGlacierに移動する方法がわかりました。
データのみを区別するためのprefix
必須なのは--file-prefix-archive
です。一つのバケット内に複数のバックアップを置くためにホスト名などをつける場合、archive
のあとにつける必要があります。
OPTS="--file-prefix-archive=archive-${HOST}- --file-prefix-manifest=manifest-${HOST}- --file-prefix-signature=signature-${HOST}-"
S3をバックアップ先として指定
export AWS_ACCESS_KEY_ID=……
export AWS_SECRET_ACCESS_KEY=……
OPTS="${OPTS} --s3-use-new-style --encrypt-key=${GPG_KEY} --sign-key=${GPG_KEY}"
duplicity $EXCLUDE $OPTS $SRC s3+http://teikan/duplicity
バックアップ結果
こんな感じでS3にバックアップが取れました。
データ(archive
)5GBに対して、メタデータ(manifest
+signature
)は39MBなので、S3に置いたままでも惜しくありません。
Lifecycleの設定
バケット名duplicity
に加えて、--file-prefix-archive
で指定したarchive
をプレフィックスに指定するのがポイントです。
結果
数日後に確認すると、期待通りarchive
だけGlacierに移動されていました。
他の方法
Lifecycleに頼らず、--s3-use-glacier
というオプションでいきなりGlacierに置く方法もあるようですが、ちゃんと動くのかよくわからないチケットもあり、試していません。