カテゴリ: AWS S3 更新日: 2026/06/22

【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説

222
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説

先生と生徒の会話形式で理解しよう

生徒

「AWSのs3 cpコマンドってよく聞きますけど、基本的な使い方や便利なオプションについて詳しく教えてください!」

先生

「s3 cpはS3へのファイルのアップロードやダウンロードに使うコマンドで、recursiveやexclude/includeオプションを使いこなすとさらに便利ですよ。初心者にもわかりやすく説明しましょう!」

生徒

「お願いします!どんな場合にオプションを使うのかも知りたいです。」

先生

「それでは基本から応用まで一緒に見ていきましょう!」

1. s3 cpコマンドの基本とは?

1. s3 cpコマンドの基本とは?
1. s3 cpコマンドの基本とは?

s3 cpコマンドは、ローカルファイルとS3バケット間でファイルのコピーを行うためのコマンドです。ファイルのアップロードやダウンロードに使います。

基本的な使い方は以下の通りです。


aws s3 cp ローカルファイルパス s3://バケット名/ファイル名
aws s3 cp s3://バケット名/ファイル名 ローカルファイルパス

例えば、ローカルのtest.txtをバケットにアップロードする場合は、


aws s3 cp ./test.txt s3://my-bucket/

2. recursiveオプションでディレクトリを丸ごとコピー

2. recursiveオプションでディレクトリを丸ごとコピー
2. recursiveオプションでディレクトリを丸ごとコピー

recursiveオプションを使うとディレクトリ配下のファイルをすべてコピーできます。ディレクトリ単位でアップロードやダウンロードしたいときに便利です。


aws s3 cp ./local-folder s3://my-bucket/ --recursive

このコマンドはlocal-folder内の全ファイルとフォルダを再帰的にS3にアップロードします。

3. exclude/includeオプションでファイルを絞り込む

3. exclude/includeオプションでファイルを絞り込む
3. exclude/includeオプションでファイルを絞り込む

大量のファイルがある場合、一部のファイルだけコピーしたいことがあります。その際にexcludeとincludeオプションを組み合わせて使います。

例:拡張子が.txtのファイルだけアップロードしたい場合


aws s3 cp ./local-folder s3://my-bucket/ --recursive --exclude "*" --include "*.txt"

まずすべてのファイルを除外(--exclude "*")し、その後に.txtファイルだけ含める(--include "*.txt")指定しています。

AWSの基本用語や仕組みを、図解でサクッと理解したい人には、 入門の定番書がこちらです。

AWSの基本が全部わかる教科書をAmazonで見る

※ Amazon広告リンク

4. 注意点と使い方のコツ

4. 注意点と使い方のコツ
4. 注意点と使い方のコツ

exclude/includeオプションは順番が大切で、上から順に評価されるため、除外と含める対象の指定に注意しましょう。

また、誤って大量のデータをアップロード・ダウンロードしないように、まずはdryrunやlsコマンドで動作を確認するのがおすすめです。


aws s3 cp ./local-folder s3://my-bucket/ --recursive --exclude "*" --include "*.txt" --dryrun

dryrunオプションは実際にはコピーせず、どのファイルが対象になるか表示してくれます。

5. 効率的にS3とローカル間でファイル操作

5. 効率的にS3とローカル間でファイル操作
5. 効率的にS3とローカル間でファイル操作

今回はAWSのs3 cpコマンドの基本的な使い方からrecursive、exclude/includeオプションの使い方まで解説しました。これらを活用すれば効率的にS3とローカル間でファイル操作が可能です。

まずは基本コマンドを試し、徐々にオプションを組み合わせてみてくださいね。

6. s3 syncコマンドとの違いと使い分けのポイント

6. s3 syncコマンドとの違いと使い分けのポイント
6. s3 syncコマンドとの違いと使い分けのポイント

AWS CLIでファイル転送を行う際、s3 cpとよく比較されるのがs3 syncコマンドです。どちらもファイルをコピーする機能を持っていますが、動作の仕組みが大きく異なります。

s3 cpは指定したファイルを無条件に上書きコピーしますが、s3 syncは「差分」を検知してコピーします。つまり、送信元と送信先を比較し、新しく作成されたファイルや更新されたファイルだけを転送するため、大量のデータを扱う際のネットワーク帯域や時間の節約になります。

使い分けの目安としては、特定のファイルを1回だけ確実に送りたい時はcp、バックアップやディレクトリ全体の同期を効率的に行いたい時はsyncを選ぶのが2026年現在のベストプラクティスです。


# 差分があるファイルだけを効率的に同期する場合
aws s3 sync ./local-folder s3://my-bucket/

7. ストレージクラスを指定してコストを最適化する

7. ストレージクラスを指定してコストを最適化する
7. ストレージクラスを指定してコストを最適化する

S3には、データのアクセス頻度に応じて料金を抑えられる「ストレージクラス」という仕組みがあります。s3 cpコマンドでは、アップロード時に--storage-classオプションを付与することで、保存コストを直接コントロールできます。

例えば、めったにアクセスしないバックアップデータをアップロードする場合、標準クラス(STANDARD)ではなく、低頻度アクセス(STANDARD_IA)や、さらに安価なGLACIERを指定することで、長期的なクラウド利用料を大幅に削減可能です。


# ストレージクラスを「低頻度アクセス」に指定してアップロード
aws s3 cp backup.zip s3://my-bucket/backups/ --storage-class STANDARD_IA

このように、コマンド一つでコスト最適化を図れるのがAWS CLIの強力なメリットです。2025年以降の運用では、単にコピーするだけでなく「どこに、いくらで置くか」を意識することが重要です。

8. 権限(ACL)の設定と公開設定の変更

8. 権限(ACL)の設定と公開設定の変更
8. 権限(ACL)の設定と公開設定の変更

アップロードしたファイルを特定のユーザーに公開したり、バケットの所有者にフルコントロールを与えたりする場合、--acl(アクセス制御リスト)オプションを使用します。デフォルトではアップロードした本人だけがアクセス可能ですが、必要に応じて権限を付加できます。

特に、静的ウェブサイトホスティングなどでファイルを外部公開したい場合はpublic-readを指定することがありますが、セキュリティの観点から慎重な操作が求められます。


# ファイルを公開状態でアップロードする場合(設定許可が必要)
aws s3 cp image.png s3://my-bucket/images/ --acl public-read

最近のAWSではバケットポリシーによる一括管理が推奨されていますが、個別のオブジェクトに対して緊急で権限を調整したい場合には、このs3 cpのオプションが非常に役立ちます。実行前には必ず、組織のセキュリティポリシーに反していないか確認しましょう。

まとめ

まとめ
まとめ

AWSのs3 cpコマンドは、クラウド上のS3バケットとローカル環境の間でファイルを安全かつ効率的に転送するための重要な仕組みです。この記事全体を振り返ると、基本的なコマンドの構文、フォルダ全体を扱うrecursiveオプション、そして細かい条件指定を可能にするexcludeとincludeの組み合わせなど、実務で頻繁に利用される実践的な操作が数多く紹介されていました。とくに、大量のファイルを扱う現場では、これらのオプションを理解せずに運用すると不要なデータをコピーしてしまうなどのトラブルにもつながるため、正しい使い方を身につけておくことが大切です。

s3 cpコマンドは単純なファイルコピーに留まらず、パターン指定によるファイルの選別や階層構造を保ったままの一括コピーなど、多くの柔軟性を備えています。特に、--exclude と --include を適切に組み合わせることでコピー対象を正確に絞り込めるため、バックアップ作業やログの整理、静的ファイルのデプロイなどの場面で大いに役立ちます。また、コピー内容が正しいかどうか事前に確認できる dryrun も非常に便利で、大規模な運用や失敗が許されない移行作業などでは欠かせないチェック手段です。

recursiveオプションを使ったディレクトリ単位でのコピーは、例えば静的サイトをS3にアップロードするシーンや、大量ファイルのバックアップに役立ちます。さらに、同じフォルダを何度も更新する場合でも差分だけを含めることで最適化された運用ができます。こうした動作を理解しておくと、S3を使った自動化やCI/CDパイプラインの構築がスムーズになり、クラウドを利用した柔軟なファイル管理が可能になります。

また、コマンドラインでのS3操作は、単純なアップロードやダウンロードだけでなく、効率性や安全性にも直結します。コピー内容をあらかじめ確認する手順や条件付きコピーの工夫は、安定したクラウド運用を行ううえで必要不可欠です。たとえば、ログファイルのみを対象にしたり、特定ファイルを除外して必要なデータだけを扱う場面では、今回学んだオプションが大いに活躍します。こうしたテクニックを身につけることで、AWS環境でのファイル管理が格段にスムーズになります。

s3 cpは実務で扱う回数が非常に多いコマンドです。そのため、基本操作に加えて複雑なオプション指定を自然に使いこなせるようになると、作業の効率が大きく向上します。今回学んだポイントを踏まえながら、自分の環境に合わせたパターンを作り、日常的に使って慣れていくことが重要です。AWSでは他にもs3 syncコマンドなど便利なコマンドがありますが、まずはcpコマンドを深く理解することで今後の学習や運用がより円滑になります。

s3 cpコマンドのカスタムサンプル


# ログファイルだけをS3へアップロードする例
aws s3 cp ./logs s3://my-log-bucket/ \
    --recursive \
    --exclude "*" \
    --include "*.log"

# 特定ディレクトリを含めてコピーする例
aws s3 cp ./project s3://my-project-bucket/ \
    --recursive \
    --exclude "*.tmp" \
    --include "*.json"

これらのサンプルのように、条件を組み合わせることで必要なデータだけを効率よく扱えるようになり、クラウド運用の幅がより広がります。

先生と生徒の振り返り会話

生徒

「先生、s3 cpコマンドって最初はただコピーするだけの機能だと思っていましたが、思ったより奥が深いんですね。」

先生

「そうですね。recursiveやexclude/includeを組み合わせるだけで、かなり複雑な要件にも対応できますよ。実務では特にファイルの種類を絞る処理が役に立ちます。」

生徒

「dryrunを使って事前に確認できるのも安心ですね。大量ファイルを扱うときに助かりそうです。」

先生

「その通りです。操作を間違えると予期せぬデータコピーが起きることもありますから、dryrunはとても大切です。」

生徒

「今回学んだオプションを組み合わせて、自分の環境でも実験してみます!」

先生

「ぜひ試してみてください。s3 cpを使いこなせるようになると、AWSでのファイル管理が格段に楽になりますよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

AWSのs3 cpコマンドとは何ですか?基本的な意味を知りたいです

s3 cpコマンドは、AWSのS3バケットとローカル環境の間でファイルをコピーするためのコマンドで、S3へのアップロードやS3からのダウンロードに使います。

s3 cpコマンドの基本的な使い方は?初心者でもわかる方法を教えてください

基本的には「aws s3 cp コピー元 コピー先」という形で使います。たとえばローカルのファイルをS3バケットにアップロードしたい場合に使います。

AWS CLIのs3 cpコマンドはWindowsとMacの両方で使えますか?

はい、AWS CLIはWindows、Mac、Linuxのすべてで利用可能です。s3 cpコマンドも同じ構文で使えます。
AWS S3の一覧へ
新着記事
Python
NumPyのdtypeとは?データ型の意味と仕組みを初心者向けに解説
NumPyのdtypeとは?データ型の意味と仕組みを初心者向けに徹底解説
Dart
Dartのクラスの作り方!定義・インスタンス生成の基礎
Dartのクラスの作り方を完全解説!初心者でも理解できるクラス定義とインスタンス生成の基礎
Java
Javaの同一性と同値性
Javaの同一性と同値性をわかりやすく解説!初心者向けの基礎知識
AWS
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
人気記事
Java
Java の Random クラスを使ってランダムな数値を生成する方法
JavaのRandomクラスの使い方を完全ガイド!初心者でもわかる乱数生成
Java
Java の getter メソッドと setter メソッドの使い方
Javaのgetterメソッドとsetterメソッドの使い方を完全ガイド!初心者でもわかるアクセス方法
AWS
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
AWS
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク