s3syncでunlinkエラーが出るとき

s3syncでこんなエラーが出るときは、

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

こんな風にしてみる

s3sync --exclude='^$' ...


s3sync以外のツールでbucketを管理しているときに出やすい。
S3にはディレクトリという概念がないんだけど、ツールによってはディレクトリ風に見せるために、"path/"とかいう名前の空ファイルを作って、ディレクトリが作成されていることにしているツールがある(CloudBerry Explorer for Amazon S3など)。ところがs3syncはこいつを空ファイル名のファイルとみなすので、うまく動かなくてエラーになる。対応は空ファイル名だったら処理を飛ばすこと。


参考:Syncing down from S3 fails to create directories (w/ --sync-dirs)