S3Syncを使ってAmazon S3からローカルディレクトリにファイルをダウンロードする

S3Syncを使ってローカルディレクトリからAmazon S3にファイルをアップロードする」の続きです。S3Syncのインストールとssl.certs.sharをダウンロードして実行するところまでは、そちらの記事を参考にしてください。

アップロードにならって、自動実行するためのスクリプトを用意します。例えば、こんなの。

#!/bin/bash
# script to download local directory from s3
export EC2_URL=https://ec2.ap-southeast-1.amazonaws.com
export AWS_CALLING_FORMAT="SUBDOMAIN"
export AWS_ACCESS_KEY_ID=my_accesskey
export AWS_SECRET_ACCESS_KEY=my_secretkey
ruby /usr/local/s3sync/s3sync.rb -r --ssl --exclude="^$" my_bucketname:download/from/ /download/to/

--exclude="^$"は空のファイル名を持つファイルを対象外にする、という意味です。Amazon S3を管理するサードパーティツールの中には管理用に空のファイルを作るものがあり、S3Syncからはこれが空ファイル名に見えるため、以下のエラーが発生することがあります。空のファイル名を持つファイルを対象外にすることで、このエラーを回避しています。

s3sync:648:in `unlink': Is a directory - /www/scripts/ (Errno::EISDIR)

re: s3syncでunlinkエラーが出るとき