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は以下を比較します:
- ファイルサイズ — サイズが異なると転送がトリガーされる
- 最終更新時刻 — より新しいローカルファイルがアップロードされる
- デフォルトではファイル内容(チェックサム)は比較しない
ユースケース
静的WebサイトビルドのS3へのデプロイ、プロジェクトディレクトリのクラウドストレージへのバックアップ、ローカルとS3環境間のデータディレクトリのミラーコピーの維持。