LoginSignup
5
1

More than 1 year has passed since last update.

S3 Syncに改めて入門してみる

Last updated at Posted at 2023-03-24

概要

S3 Syncを使用する機会があったので、改めて理解を整理してみました。

S3 Syncとは

s3 sync コマンドはバケットとディレクトリの内容、または 2 つのバケットの内容を同期します。
通常、s3 sync は欠落しているか古くなったファイルやオブジェクトを、ソースとターゲットの間でコピーします。

cpとsyncの違いは?

  • cpはファイルをコピーするコマンド
  • syncはディレクトリの更新差分をコピーする(同期する) コマンド

image.png
※赤文字が更新部分

やってみる

基本的なコマンド

$ aws s3 sync files/  s3://kurono-test-sync/

image.png

S3内ファイル確認コマンド

$ aws s3 ls --recursive s3://kurono-test-sync --summarize

ローカルファイルを削除して実行

削除して、実行
image.png
何も行われない。
image.png

宛先のファイル削除コマンド

$ aws s3 sync files/ s3://kurono-test-sync/ --delete

image.png

宛先からもファイルを削除するには--deleteオプションを付けて実行する必要がある。

--delete(ブール値)宛先には存在するがソースには存在しないファイルは、同期中に削除されます

S3 Syncが更新されたとみなす条件

以下の様な、条件があるため注意が必要です。

  • 指定されたバケットとプレフィックスの下にローカルファイルが存在しません。
  • ローカルファイルのサイズは、s3オブジェクトのサイズとは異なります。
  • ローカルファイルの最終変更時刻は、s3オブジェクトの最終変更時刻よりも新しいです。

上記をコントロールする方法

  • --size-only(ブール値)各キーのサイズを、ソースから宛先に同期するかどうかを決定するために使用される唯一の基準にします。

  • --exact-timestamps(ブール値)S3からローカルに同期する場合、タイムスタンプが完全に一致する場合にのみ、同じサイズのアイテムは無視されます。

まとめ

  • 今回は、ローカル→S3で試しましたが、S3→S3も実行できるので機会があれば試してみたいです。
  • --dryrunで実行前に確認を入れるとより良いかと思います。
5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1