aws-cliを使ってs3のバケット間同期をしてみる
みなさんのプロジェクトではs3を使用していますか?
画像や音声などをs3で管理しているプロジェクトも多いと思います。
僕がいま所属しているプロジェクトでもs3を使用していて
そのときにバケット間同期をする必要があり、aws-cliを使って同期しています。
メモがてらブログに書いておこうと思います。
github
余談ですがaws-cliはOSSなので気が向いたら見ておいてもいいかもしれません。
(pytonで書かれてるんですね。。。golangだったらプルリクでも送ろうかと思ったのですが)
インストール方法などはREADMEに書いてあります。
差分反映
実際にバケット間の同期を行うにはsync
コマンドを使用すれば実行できます。
以下のような感じです。
aws s3 sync s3://同期元のバケット名 s3://同期先のバケット名
差分確認
バケット間の差分確認は--dryrun
オプションを使用します。
差分反映ではないので、実際に同期されないので安心して使えます。
aws s3 sync --dryrun sync s3://同期元のバケット名 s3://同期先のバケット名
個別反映
バケット間の同期ではなく、ファイル1つだけ差分反映したい場合にはcp
コマンドを使用します。
aws s3 cp s3://同期元バケット名/同期元ファイル名 s3://同期先バケット名/同期先ファイル名
deleteオプション
僕がオプションの中で1つだけ実際に使っているのがあります。
それが--delete
です。
このオプションは「同期元のファイルで削除したファイルを同期先でも削除したい」ときに設定します。
つまりバケット間を完全同期したいときに使用するコマンドですね。
僕がいるプロジェクトではバケット間で完全同期したいので常に--delete
オプションを付けています。
まとめ
aws-cliをjenkinsなどで定期実行するような設定にしておけば、より便利になるんじゃないかと思います。
おわり!!