【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説
生徒
「AWSのs3 cpコマンドってよく聞きますけど、基本的な使い方や便利なオプションについて詳しく教えてください!」
先生
「s3 cpはS3へのファイルのアップロードやダウンロードに使うコマンドで、recursiveやexclude/includeオプションを使いこなすとさらに便利ですよ。初心者にもわかりやすく説明しましょう!」
生徒
「お願いします!どんな場合にオプションを使うのかも知りたいです。」
先生
「それでは基本から応用まで一緒に見ていきましょう!」
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オプションでディレクトリを丸ごとコピー
recursiveオプションを使うとディレクトリ配下のファイルをすべてコピーできます。ディレクトリ単位でアップロードやダウンロードしたいときに便利です。
aws s3 cp ./local-folder s3://my-bucket/ --recursive
このコマンドはlocal-folder内の全ファイルとフォルダを再帰的にS3にアップロードします。
3. exclude/includeオプションでファイルを絞り込む
大量のファイルがある場合、一部のファイルだけコピーしたいことがあります。その際にexcludeとincludeオプションを組み合わせて使います。
例:拡張子が.txtのファイルだけアップロードしたい場合
aws s3 cp ./local-folder s3://my-bucket/ --recursive --exclude "*" --include "*.txt"
まずすべてのファイルを除外(--exclude "*")し、その後に.txtファイルだけ含める(--include "*.txt")指定しています。
4. 注意点と使い方のコツ
exclude/includeオプションは順番が大切で、上から順に評価されるため、除外と含める対象の指定に注意しましょう。
また、誤って大量のデータをアップロード・ダウンロードしないように、まずはdryrunやlsコマンドで動作を確認するのがおすすめです。
aws s3 cp ./local-folder s3://my-bucket/ --recursive --exclude "*" --include "*.txt" --dryrun
dryrunオプションは実際にはコピーせず、どのファイルが対象になるか表示してくれます。
5. 効率的にS3とローカル間でファイル操作
今回はAWSのs3 cpコマンドの基本的な使い方からrecursive、exclude/includeオプションの使い方まで解説しました。これらを活用すれば効率的にS3とローカル間でファイル操作が可能です。
まずは基本コマンドを試し、徐々にオプションを組み合わせてみてくださいね。
まとめ
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でのファイル管理が格段に楽になりますよ。」