Debian mirrorの更新って、ミラー中もアクセスしても整合性がとれてるように、
ざっくりいうと次みたいな流れになっている。

  1. pool/以下を--deleteなしでrsync
  2. 全体を--after-deleteありrsync

(正確には dists/以下の特定パターンのファイルがあとで更新されること、
ファイルの削除が最後に消されることが条件だけど、まぁ細かいことは
考えなくてもいい、ここでは)

で、なにが言いたいかいうと、結局都合2回rsyncがかかるのと、1回目と2回目に
同じディレクトリのトラバーサルが走るので、まぁなんつーか若干効率が悪い
わけです。

でだ、一方 rsync には --deley-updates というオプションがあります。

これは取り合えずファイルを別の位置にどばーっととってきておいて、
実際のファイルの更新は最後にまとめてやりますよ というオプション。

一般的にリモートからローカルの転送には時間がかかるけど、ローカルでの
renameは比較的短時間で済むので、ツリー全体の不整合な時間を
ある程度減らせますよ というためのものですね(もちろん、atmicには
なりません)。

でね、この --deley-updatesオプションの動作を拡張するなり、
別のオプション(例えば --deley-update-patternとかいうオプション
を新設がいいんじゃね? という気がしている)して、「指定したパターンに
合致したファイル/ディレクトリのみ、delay-update する」とかできると、
Debian mirror 的には rsync 一発でいけるようになるので、ちょっと
うれしいんじゃねぇか? とか思いました。

誰かやる人?(わら
(自分でやれといわれそうだな(わら)

コメントを残す