稼働中のWebアプリのSQLiteデータベースを定期的にバックアップしたい (単なるファイルコピーではデータの一貫性を保証できない…コピー中に更新されたら?)。 従来は sqlite3 データベース .dump > バックアップをcronでまわしてダンプをとっていた。 小規模なうちはこれでよかったが、データベースのサイズが100MB単位になると1分以上かかるケースもあり、その間にアプリからの更新がブロックされタイムアウトしてエラーが頻発していた。 LVM上であればスナップショットを使ってロックなしでバックアップすることができるが、通常のパーティションの上で稼働しているシステムでは (reflinkもまだないし) ロックをするほかない。 いろいろ調査・実験した結果、rdiffを使うとロック時間を最小化することができた。 rdiffはバイナリ差分をとるツールで、前回のバックアップからの差分をと