AWS S3からほかのサーバーにファイルを一括でダウンロードする
AWS S3からファイルを一括ダウンロードするには、公式クライアントであるaws-cliが便利です。 ほかにもツールがあるようですが、今回の用途のためには公式ツール一択と考えて良いでしょう。
aws-cliをダウンロード
S3からほかのサーバーにファイルを移行する場合は、aws-cliが便利です。 まずは、移行先のサーバーにaws-cliをインストールします。
公式ドキュメントは以下の通り。
Python 2.6.5以上またはPython3.3以上が必要なので、もしインストールされていなければインストールします。
yum info python yum install -y python python-pip pip install awscli --upgrade --user
awsコマンドを使えるようにパスを通して、aws --versionで確認をします。
$ ls ~/.local/bin aws $ export PATH=~/.local/bin:$PATH $ source ~/.bash_profile $ aws --version aws-cli/1.11.84 Python/3.6.2 Linux/4.4.0-59-generic botocore/1.5.47
aws-cliの設定には、IAMユーザーのアクセスキーとシークレットアクセスキーが必要です。 IAMユーザーとは、Identity and Access Managementを省略されたもので、ユーザー毎にアクセス権限が設定されています。
初めて作成するAWS アカウントはルートユーザーと呼ばれ、AWS上のすべてのサービスに対して完全なアクセス権限を持っています。 サーバーで言うrootユーザーと同じで権限が強すぎるため、適切に権限を割り当てたIAMユーザーを作成して、これを使うことが推奨されています。
まだ、ユーザーを作成していない場合やユーザーを追加したい場合は、IAMコンソールにアクセスし「ユーザー追加」をクリックします。 作成途中の権限設定で、「AmazonS3FullAccess」を選択するようにしてください。
$ aws configure AWS Access Key ID [None]: アクセスキーを入力 AWS Secret Access Key [None]: シークレットアクセスキーを入力 Default region name [None]: 東京の場合はap-northeast-1と入力 Default output format [None]: json
設定がうまくいっているか確認するために、s3のバケットを確認します。
$ aws s3 ls 2016-10-17 18:49:32 example.com
S3からダウンロード
ファイルのダウンロードはコマンドひとつで可能です。
ディレクトリ内のファイルをすべてダウンロードする場合は、オプション--recursive
をつけます。
aws s3 cp s3://バケット名/ディレクトリ/ /保存先ディレクトリ/ --recursive
たとえば、以下のようなコマンドになります。
aws s3 cp s3://example.com/wp-content/uploads/ /var/www/html/wp-content/ --recursive