はじめに
個別のオブジェクトを整理したら、変化するファイル群を公開します。日次レポートを同期し、差分転送とミラーを区別して、別のアーカイブに触れずに古いレポートを削除します。
最初に キーとメタデータで文書を整理する を完了し、バケット、キー、プレフィックス、ダウンロードの概念を学んでください。この新しい VM には、CLI 接続、ローカルのレポート、アーカイブだけを含むバケットが提供されます。コマンドには Terminal を使い、上部の AWS Viewで変化を観察します。
認定試験との関連
| 認定資格 | 試験タスク | 演習内容 |
|---|---|---|
| Cloud Practitioner (CLF-C02) | タスク 3.6 | S3 でのディレクトリ同期と範囲を限定した削除。 |
| Solutions Architect – Associate (SAA-C03) | タスク 3.1 | S3 でのディレクトリ同期と範囲を限定した削除。 |
| Developer – Associate (DVA-C02) | タスク 1.3 | S3 でのディレクトリ同期と範囲を限定した削除。 |
ラボの概要

準備済みのレポートディレクトリを公開する
このステップでは、二つのローカルレポートを daily/ プレフィックスに公開し、ファイル名とオブジェクトキーの対応を理解します。
cd(ディレクトリを変更する)で作業ディレクトリに移動します。
cd /home/labex/project
ローカルのファイル名を一覧表示する ls で、準備済みのレポートディレクトリを確認します。
ls reports
一覧には monday.csv と tuesday.csv が含まれます。どちらも CSV ファイルです。ヘッダーが列の名前を示し、各レコードではカンマが値を区切ります。ファイルの内容を表示する cat で、月曜日のレポートを確認します。
cat reports/monday.csv
date,orders
2026-09-28,120
準備済みのバケットを一覧表示します。S3 の場所に対して --recursive を使うと、バケット全体の完全なキーが表示されます。
aws s3 ls s3://labex-report-delivery/ --recursive
archive/retention.txt だけが存在します。アーカイブは別の作業の流れに属するため、日次の同期後も保持する必要があります。
aws s3 sync は、コピー元、コピー先の順に指定します。コピー元ディレクトリのファイルを再帰的に対象とするため、sync に --recursive は必要ありません。各相対ファイル名が、コピー先プレフィックスの下のキーになります。そのため reports/monday.csv は daily/reports/monday.csv ではなく、daily/monday.csv になります。
aws s3 sync reports/ s3://labex-report-delivery/daily/
コマンドは月曜日と火曜日のアップロードを表示します。出力の順序は異なる場合があります。バケット全体をもう一度一覧表示します。
aws s3 ls s3://labex-report-delivery/ --recursive
archive/retention.txt、daily/monday.csv、daily/tuesday.csv の三つのキーが見つかるはずです。AWS View にも同じオブジェクトが表示されます。daily/monday.csv をクリックし、保存された二行の CSV レポートを読み取ります。アーカイブは、選択したコピー先 daily/ の範囲外に残っています。
変更と新しいレポートを同期する
このステップでは、一つのレポートを更新して別のレポートを追加し、変更のないレポートを再アップロードせずに、それらの変更を転送します。
どちらにも変更がない場合、同じコピー元とコピー先で sync を実行しても安全です。
aws s3 sync reports/ s3://labex-report-delivery/daily/
既存のファイルが最新の状態なら、アップロードの行はありません。ローカルから S3 への転送では、CLI はコピー先のキーがないか、サイズが異なるか、ローカルファイルの更新日時がより新しいかを判断します。ディレクトリを継続的に監視するわけではなく、変更を公開したいときに sync を実行します。
月曜日のレポートに、遅れて届いた 25 件の注文を追加します。printf は引用符で囲んだテキストを出力し、\n は行を終えます。シェルの >> は、ローカルファイルを置き換える代わりに追記します。
printf '2026-09-28,25\n' >> reports/monday.csv
三行になった結果を確認します。
cat reports/monday.csv
date,orders
2026-09-28,120
2026-09-28,25
水曜日のレポートを作成します。ここでの > は新しいファイルを書き込み、そのパスに既に内容があれば置き換えます。
printf 'date,orders\n2026-09-30,150\n' > reports/wednesday.csv
公開する前は、保存済みの月曜日のレポートはまだ二行で、AWS View に水曜日はありません。ローカルファイルの編集だけでは S3 は変わりません。
もう一度公開します。
aws s3 sync reports/ s3://labex-report-delivery/daily/
変更した月曜日のレポートと、新しい水曜日のレポートのアップロードが表示されるはずです。火曜日には変更がないため、アップロードされません。これは差分転送です。すべてのファイルを無条件にコピーする代わりに、変更をコピーします。
AWS View では、月曜日に遅れて届いた分が表示され、水曜日が追加されています。実際に保存された内容を比較できるよう、月曜日を別のローカルパスにダウンロードします。
aws s3 cp s3://labex-report-delivery/daily/monday.csv retrieved-monday.csv
cmp はファイルをバイト単位で比較します。内容が一致すると、差分を表示せずに正常終了します。&& は、その比較が成功した後だけメッセージを表示します。
cmp reports/monday.csv retrieved-monday.csv && echo 'Updated report matches'
Updated report matches
これにより、更新がストレージに届いたことを確認できます。コマンドの成功メッセージだけでは、どのバイト列が保存されたかはわかりません。

daily プレフィックスだけをミラーリングする
このステップでは、無関係なアーカイブを保護しながら、コピー先の不要になったレポートを削除します。
sync のコピー先は daily/ です。archive/ はその範囲外にあります。

火曜日のレポートは、公開する日次レポートの集合に不要となりました。rm(削除する)で、そのローカルファイルだけを削除します。これはローカルファイルシステムのコマンドなので、S3 オブジェクトは削除しません。
rm reports/tuesday.csv
通常の sync をもう一度実行します。
aws s3 sync reports/ s3://labex-report-delivery/daily/
コピー先プレフィックスを一覧表示します。
aws s3 ls s3://labex-report-delivery/daily/ --recursive
火曜日はまだ表示されます。デフォルトでは、sync は存在しないファイルや更新されたファイルをコピーしますが、コピー先の余分なオブジェクトは残します。コピー元のファイルを削除するだけでは、保存されたコピーは削除されません。
ミラーリングは、削除も含めて、コピー先のファイル集合をコピー元に合わせることです。--delete は、一致するコピー元ファイルがないコピー先のキーを削除します。まず、実行せずに予定される操作を表示する --dryrun と組み合わせます。
aws s3 sync reports/ s3://labex-report-delivery/daily/ --delete --dryrun
ドライランには、daily/tuesday.csv の削除だけが表示されるはずです。月曜日と水曜日はコピー元に一致し、archive/retention.txt は daily/ の範囲外です。コピー先のプレフィックスを正確に保ってください。バケットのルートを使うと、アーカイブも対象範囲に含まれます。
予定される削除を確認した後、--dryrun を外して同じ操作を実行します。
aws s3 sync reports/ s3://labex-report-delivery/daily/ --delete
コマンドは火曜日の削除を表示します。なくなったものと残ったものの両方を確認できるよう、バケット全体を確認します。
aws s3 ls s3://labex-report-delivery/ --recursive
残るキーは daily/monday.csv、daily/wednesday.csv、archive/retention.txt です。AWS View でアーカイブオブジェクトを開き、引き続き Keep the archive outside daily synchronization. と表示されることを確認してください。ミラーリング操作が影響したのは、選択したプレフィックスだけです。
まとめ
sync で変化するレポートディレクトリを公開し、保存済みの更新を検証してから --delete によるミラーをプレビューしました。最後の daily/ には月曜と水曜のレポートがあり、別のアーカイブは変わりません。公開前に転送方向と対象範囲を確認しましょう。
詳しくは、AWS 公式ドキュメントを参照してください:S3 sync の転送対象、プレビュー、削除範囲.



