【AWS】s3 cpとsyncの違いとは?初心者でもわかるユースケースと使い分け解説
生徒
「AWS CLIでファイルをS3にアップロードするとき、s3 cpとs3 syncってありますけど、違いがよくわからないんです。」
先生
「どちらもS3とローカル間でファイルをコピーするためのコマンドですが、用途や挙動に大きな違いがありますよ。」
生徒
「じゃあ、どんな場合にcpを使って、どんな場合にsyncを使えばいいんですか?」
先生
「それを知ると作業効率がかなり変わります。では、具体的な使い分けとユースケースを順番に説明していきましょう。」
1. s3 cpコマンドとは?
aws s3 cpコマンドは、1つまたは複数のファイルをS3にコピーしたり、S3からローカルにコピーするためのコマンドです。単純にファイルを送受信したい場合に適しています。フォルダ全体をコピーする場合は--recursiveオプションを付ける必要があります。
aws s3 cp ./file.txt s3://my-bucket/
この例では、ローカルのfile.txtをS3バケットのルートにコピーします。再度同じコマンドを実行すると、ファイルは再び上書きされます。差分比較は行われません。
2. s3 syncコマンドとは?
aws s3 syncは、指定したディレクトリとS3バケット間で「差分のみ」を同期するコマンドです。新しく追加されたファイルや更新されたファイルだけをアップロードまたはダウンロードします。
aws s3 sync ./local-folder s3://my-bucket/
このコマンドを実行すると、ローカルフォルダとS3バケットの中身を比較して、変更があるファイルのみ転送します。大量のファイルを扱うときに効率的で、バックアップやWebサイトの更新作業によく使われます。
3. cpとsyncの主な違い
- コピーの対象:cpは指定したファイル(または--recursiveでフォルダ)をそのままコピー。syncは差分だけコピー。
- 更新チェック:cpは常に上書き、syncは変更があったときのみ更新。
- オプションの違い:syncには
--deleteや--exact-timestampsなどの同期専用オプションがある。 - 速度と効率:syncは差分転送のため、更新頻度が低い場合に効率的。
4. cpコマンドを使うべきユースケース
cpは単発でファイルを送受信したいときに便利です。例えば、単一の画像やログファイルをアップロードしたい場合や、バケットから特定のファイルだけをダウンロードしたい場合に適しています。
また、同期を意識せず「とにかくすぐにコピーしたい」という場面でもcpを選びます。
aws s3 cp s3://my-bucket/image.png ./image.png
5. syncコマンドを使うべきユースケース
syncは複数ファイルやディレクトリ全体を最新状態に保ちたい場合に最適です。Webサイトの公開フォルダをS3にアップロードする場合や、定期的なバックアップなどで効率的に差分だけ反映させたいときに利用します。
dryrunオプションを組み合わせることで、安全に更新内容を確認してから実行できます。
aws s3 sync ./website s3://my-bucket --dryrun
6. オプションの違いと活用例
cpとsyncはオプションも異なります。例えば、syncは--deleteでS3に存在する不要ファイルを削除できますが、cpにはその機能はありません。
cpでは--recursiveを使ってフォルダ全体をコピーできますが、差分判定は行われません。
7. 初心者へのおすすめ使い分け
初心者の場合は、まずcpで単発のファイル操作に慣れるのがおすすめです。その後、更新作業や大規模ファイル管理ではsyncを活用すると効率が上がります。
AWS CLIを使いこなすためには、この2つのコマンドの特徴を理解しておくことが非常に重要です。