2014以前、Jekyllを便利に使うためのRakefileと称して、Jekyllで生成したHTMLなどのgzipファイルを生成してrsyncでデプロイするコードを紹介しました。このコードで確かにデプロイできることはできるのですが、何も変更されていないファイルも含めて毎回転送されてしまうという問題があったため、対策しました。doend前回のコードの最大の問題は、Jekyllでビルドするとすべてのファイルが再生成されてタイムスタンプが変化することを考慮していない点です。これにより、ファイルの内容が変わっていないにも関わらず、ファイルが変更されたと見なされていました。今回のコードでは、--checksumオプションを追加することで、ファイルの内容によって変更をチェックするようにしています。これだけでは十分ではありません。gzip圧縮したファイルは、--checksumオプションを追加しても毎回転送されてしまいます。これは、gzipファイルに圧縮前のファイルのタイムスタンプの情報が圧縮後のファイルに格納されていることに起因します。含められることを回避できます。上の例では--rsyncableオプションを追加してrsyncでの変更の有無の確認を高速に行えるgzipファイルを生成しています。Xなどの環境ではオプションを削除するか、GNUのgzipをインストールしてください。