AWS CLI便利! S3 syncも便利
Dropboxのhttpホスティング無き今、S3を使っているわけです。
ちょっとした疑問から課題へ
基本的には、保存や変更のがある度にローカル⇒S3と必ず実行しているのですが
競合した場合どうなるのかななぁ、と。
Dropboxだと、競合したファイルという別名で保存されながら同期されますが
シンプルなコマンドラインでは当然そんなことはしていません。
と、調べていたらなんとこんな記事が。
ファイルサイズが一緒の場合はsyncでは同期されないとのことで
--exact-timestamps を指定しないとダメなようです。
$ aws s3 sync --exact-timestamps ./ s3://my-bucket-1.sample.com/
こうですか。
競合の場合は?
タイムスタンプが違った場合に同期されるのはわかったのですが
よくよく試してみると、タイムスタンプが違った場合は
強制コピーする。という仕様のようです。
つまりたとえば、
ローカル⇒サーバーのsyncで、サーバーのタイムスタンプが新しい場合でも
サーバーのファイルは上書きされてしまうのです。
これは盲点。。
しかもメッセージとしても通知されないので気づきにくいです。
せめてタイムスタンプが新しい場合のみ同期するというオプションがあれば良いのですが、syncのリファレンスを参照した所そんな感じのオプションはなさそうです。
sync — AWS CLI 1.11.19 Command Reference
気をつけましょうー