カテゴリ: AWS S3 更新日: 2025/12/02

【AWS】s3 cpとrecursiveの組み合わせ!ディレクトリ・ワイルドカード活用術

315
【AWS】s3 cpとrecursiveの組み合わせ!ディレクトリ・ワイルドカード活用術

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

生徒

「先生!AWSのS3でファイルをコピーするときにs3 cpコマンドを使うって聞いたんですけど、どうやってディレクトリごとコピーするんですか?」

先生

「いい質問ですね。aws s3 cp--recursiveオプションをつけることで、ディレクトリ全体を一括でコピーできますよ。」

生徒

「ワイルドカードも使えたりするんですか?」

先生

「実はちょっとだけ制限はありますが、工夫すれば*.jpgみたいな指定もできます。詳しく解説していきましょう。」

1. AWS CLIの s3 cp とは?

1. AWS CLIの s3 cp とは?
1. AWS CLIの s3 cp とは?

AWS CLI(コマンドラインインターフェース)は、AWSの操作をコマンドで行うための強力なツールです。その中でもaws s3 cpは、ローカルとS3、S3間のファイルコピーに使われる基本的なコマンドです。

特に、S3バケット内のファイルを一括で転送したいときや、ローカルフォルダをS3にアップロードしたいときに活躍します。

2. --recursive でディレクトリを丸ごとコピー

2. --recursive でディレクトリを丸ごとコピー
2. --recursive でディレクトリを丸ごとコピー

--recursiveオプションを使えば、フォルダ(ディレクトリ)内のすべてのファイルやサブディレクトリを一括でコピーできます。

例えば、ローカルのimagesフォルダをS3にアップロードするには、以下のように書きます。


aws s3 cp ./images s3://your-bucket-name/images --recursive

このように指定すると、imagesフォルダ内の全てのファイルがS3のimagesディレクトリにそのままコピーされます。

3. S3からローカルへダウンロードする場合

3. S3からローカルへダウンロードする場合
3. S3からローカルへダウンロードする場合

逆に、S3からローカル環境にディレクトリごとダウンロードしたい場合も、同じく--recursiveを使います。


aws s3 cp s3://your-bucket-name/images ./images --recursive

S3上のデータ構造をローカルでも再現するために、ディレクトリを正確に指定しておくと便利です。

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

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

※ Amazon広告リンク

4. ワイルドカードは使える?制限に注意しよう

4. ワイルドカードは使える?制限に注意しよう
4. ワイルドカードは使える?制限に注意しよう

aws s3 cpでは、シンプルな*.jpg*.txtといったワイルドカード指定は直接サポートされていません。

しかし、LinuxやMacのターミナル環境であれば、ローカル側のシェル展開を利用することが可能です。


aws s3 cp *.jpg s3://your-bucket-name/photos/

この方法は、あくまでローカル側でファイルリストを展開してコマンドを実行しているだけです。WindowsではPowerShellの書き方に注意が必要です。

5. --exclude と --include の併用で柔軟な制御

5. --exclude と --include の併用で柔軟な制御
5. --exclude と --include の併用で柔軟な制御

ワイルドカードを活用したい場合は、--recursiveと一緒に--exclude--includeを使うと、柔軟にファイルを選択できます。


aws s3 cp ./ s3://your-bucket-name/ --recursive --exclude "*" --include "*.jpg"

このコマンドは、.jpgファイルだけをS3にアップロードする方法として非常に便利です。--exclude "*"で一旦すべて除外し、--include "*.jpg"で拡張子が.jpgのものだけを含めるという流れです。

6. ディレクトリ構造を保ったままコピーするには?

6. ディレクトリ構造を保ったままコピーするには?
6. ディレクトリ構造を保ったままコピーするには?

S3にフォルダ階層を保ったままコピーしたい場合、カレントディレクトリ指定に注意します。


aws s3 cp ./photos s3://your-bucket-name/backup/photos --recursive

こうすることで、ローカルのphotosディレクトリ以下の構造がS3にそのままアップロードされます。

7. S3間でのコピーにも対応

7. S3間でのコピーにも対応
7. S3間でのコピーにも対応

aws s3 cpは、S3バケット間のコピーにも使えます。以下はS3間コピーの例です。


aws s3 cp s3://bucket-a/folder/ s3://bucket-b/folder/ --recursive

このようにすると、bucket-afolder配下がbucket-bにまるごとコピーされます。

8. よくあるエラーと解決方法

8. よくあるエラーと解決方法
8. よくあるエラーと解決方法

エラー1:パスの末尾にスラッシュ(/)がない

例えば、次のように書くと、指定ディレクトリ自体が含まれてしまい、構造が崩れます。


aws s3 cp ./photos s3://bucket/photos --recursive

正しくは:


aws s3 cp ./photos/ s3://bucket/photos --recursive

エラー2:「parameter must be a file or directory」

指定したローカルパスやS3のURIが正しいか、存在するかを再確認しましょう。

9. ワイルドカードと --recursive の使い方を組み合わせよう

9. ワイルドカードと --recursive の使い方を組み合わせよう
9. ワイルドカードと --recursive の使い方を組み合わせよう

aws s3 cpの真価は、--recursive--include--excludeの組み合わせにあります。たとえば画像だけ選んでアップロードしたい場合:


aws s3 cp ./ s3://my-bucket/images/ --recursive --exclude "*" --include "*.png" --include "*.jpg"

これで.png.jpgの画像ファイルだけがアップロードされます。

10. ファイル転送時の注意点とベストプラクティス

10. ファイル転送時の注意点とベストプラクティス
10. ファイル転送時の注意点とベストプラクティス
  • S3 URIの末尾の/を適切に扱う
  • --dryrunで事前確認する
  • 必要に応じて--storage-classでストレージクラスを指定する
  • 冪等性を意識してスクリプト化する

aws s3 cp ./data s3://my-bucket/data --recursive --dryrun

このように--dryrunをつけると、実際には実行されず、どのファイルがコピー対象になるか確認できて安心です。

AWS S3の一覧へ
新着記事
FlutterのMVP・MVVMアーキテクチャの違いと使い分け
FlutterのMVP・MVVMアーキテクチャの違いと使い分けを初心者向けに解説!
オニオンアーキテクチャの基本とFlutterでの適用例
オニオンアーキテクチャの基本とFlutterでの適用例を初心者向けに解説
クリーンアーキテクチャとは?Flutterでの導入メリット
クリーンアーキテクチャとは?Flutterでの導入メリットをやさしく解説
【AWS】RDS for Oracleの特徴・できないこと・バージョン・料金まとめ
【AWS】RDS for Oracleの特徴・できないこと・バージョン・料金を初心者向けに徹底解説
人気記事
インスタンスタイプの料金比較と最適な選び方(最新2025年版)
AWSのインスタンスタイプの料金比較と最適な選び方【2025年最新版】
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説

🔌 USBポート不足を解消

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

UGREEN USB-Cハブを見る

※ Amazon広告リンク