差分FTPを考える

WordPress(ワードプレス)のバックアップはデータベースのバックアップだけでは足りません。写真ファイルやプラグインもバックアップしたいところです。

さて、通常日次的なデータを他のサーバーにバックアップする場合、
tarでアーカイブして転送する、という方法が一般的です。

ところがこの方式はtarアーカイブするためのディスク容量とIOのリソースが必要です。
これが意外に馬鹿にならないです。

これを解決するためには、アーカイブせずにあるディレクトリ配下を全て転送することです。

しかしながらデフォルトのFTPコマンドでは*(アスタリスク)は使えませんし、ディレクトリの転送にも対応していません。

NCFTPコマンドを使えばディレクトリをそのまま転送することができます。

> put -R bar

試しにやってみましたが、とても便利だと感じました。

ところが、NCFTPで日次のバックアップをしようと考えた時、イマイチです。
なぜかといいますと、全てのファイルを転送してしまうからです。
出来たら、とあるディレクトリ配下のその日に更新されたファイルのみの転送をしたいところですよね。更新されたファイルがない日は何もしない、というのが理想です。

差分FTPを考える

実は昔一度作ったはずなのですが、紛失・・・。
というわけで作成したいと思います。

  1. 指定したディレクトリ配下のファイルリストを作る
  2. ファイルはcksumコマンドの実行結果を付与
  3. 前回のファイルリストと今回のフィアルリストを比べる
  4. ディレクトリリストを取得
  5. ディレクトリのみを送信先に作成する
  6. 変化のあるファイルのみを転送する

こんな動きでいいでしょう。

前回のファイルが存在しない場合は全てのファイルの転送となります。
また、日次実行前に削除されたファイルは転送先には残ってしまいます。が、これは仕様とします。

次回に続きます。