AWS S3 sync: ディレクトリをS3と同期する

aws s3 syncを使用してローカルディレクトリをS3プレフィックスと同期します。変更されたファイルのみをアップロードし、--deleteでミラー同期をサポート。

S3 Operations

詳細な説明

aws s3 syncでディレクトリを同期

aws s3 syncコマンドは、ローカルディレクトリとS3プレフィックス(または2つのS3ロケーション間)でファイルをインテリジェントに同期します。新しいファイルまたは変更されたファイルのみを転送するため、増分更新ではcp --recursiveよりはるかに高速です。

基本的な同期コマンド

aws s3 sync ./dist/ s3://my-website-bucket/

前回の同期以降に追加または変更されたファイルのみをアップロードします。

--deleteによるミラー同期

aws s3 sync ./dist/ s3://my-website-bucket/ --delete

--deleteフラグはソースに存在しなくなったファイルを宛先から削除し、完全なミラーを作成します。注意して使用してください — S3オブジェクトが永久に削除されます。

フィルターを使った選択的同期

aws s3 sync ./project/ s3://my-bucket/project/ \
  --exclude "*.tmp" \
  --exclude ".git/*" \
  --exclude "node_modules/*" \
  --include "*.js" \
  --include "*.css"

フィルターは順番に適用されます。最初にすべてのファイルが含まれ、次に--excludeパターンでファイルが除外され、その後--includeパターンでファイルが再度含まれます。

ドライランプレビュー

aws s3 sync ./data/ s3://my-bucket/data/ --dryrun

--dryrunフラグは、実際にファイルをコピーせずに何が転送されるかを表示します。本番データで--deleteを使用する前に必ず使用してください。

同期の変更判定方法

S3 syncは以下を比較します:

  1. ファイルサイズ — サイズが異なると転送がトリガーされる
  2. 最終更新時刻 — より新しいローカルファイルがアップロードされる
  3. デフォルトではファイル内容(チェックサム)は比較しない

ユースケース

静的WebサイトビルドのS3へのデプロイ、プロジェクトディレクトリのクラウドストレージへのバックアップ、ローカルとS3環境間のデータディレクトリのミラーコピーの維持。

試してみる — AWS CLI Command Builder

フルツールを開く