WindowsでS3Syncを使う方法

t.hiroshi 2013年7月25日

S3とローカルのフォルダを同期してくれる便利なオープンソースの「S3Sync」ですが
何かと、Windowsで使うとなるとややこしいことがあります。

Linux系の情報はネットによくありますが、Windowsとなるとあまり無いので、
インストールの方法をこの機会にまとめてみます。

【インストール手順】

まず何と言ってもRubyが必要です。
Windowsのインストーラーがありますので、これは特に何も苦労すること無くインストールできるでしょう。

次に必要なモジュール類のインストールです。SSL通信をさせるためにはOpenSSL、そして、文字コード変換用のライブラリであるiconv.dllを入れましょう。
それぞれ、OpenSSLはインストーラーがありますので、こちらも簡単です。
iconv.dllはこちらからダウンロードし解凍後、iconv.dllを「C:/WINDOWS/system32」などに入れておきましょう。

そして、S3Sync本体をダウンロード後、任意の場所に解凍します。

【各種設定】

S3Syncを使うには各種設定が必要です。まずは、S3Syncの設定ファイルである「s3config.yml」を以下のように編集します。

aws_access_key_id:(AWSのアクセスキー)
aws_secret_access_key:(AWSのシークレットキー)
AWS_CALLING_FORMAT: SUBDOMAIN

環境変数に以下を設定します。

 set S3CONF=c:\s3sync <-s3config.ymlがあるパス
 set S3SYNC_NATIVE_CHARSET=CP932 <ーWindowsのファイル名の日本語はShift_JISだがCP932と指定しないと囲み数字等の機種依存文字などが文字化けします。

S3SYNC_NATIVE_CHARSETなどは、s3config.ymlに書いてもよさそうに思いますが、どういうわけかWindowsでは環境パスで指定しないと上手く動きません。
以上で基本設定は完了です。

次にSSLを使う場合ですが、これがWindows環境ではやや難しいです。
Linux環境などでは、SSLのcertsファイルをダウンロードし、そのディレクトリをs3config.ymlに記載すれば良いのですが、Windowsでは上手く動きません。これはいろいろ調べましたが原因は不明です。

そこで荒業ですが、certsファイルの検証をやめ、ワーニングが出ないようにします。
S3_s3sync_mod.rb の52行目を「OpenSSL::SSL::VERIFY_NONE」とします。

 # http.verify_mode=@verify_mode
 http.verify_mode=OpenSSL::SSL::VERIFY_NONE

これでSSLモードで動かしてもワーニングは吐かれません。

以上であとは、S3syncを動かすだけです。