昨日心配していた、同一ファイルがいくつも Archive される件

md5sum `namazu -n 200 村長 .|grep '^/usr'|sed 's/html.*/html/'`|sort |sed 's/ .*//'|uniq -c|sort -n|wc -l
73
namazu -n 200 村長 .|grep '^/usr'|sed 's/html.*/html/'|wc -l
153

やっぱりねー。73種類で153ファイルか。
でも、Blog なんかは毎日同じ url で内容が変わっているから、日付を付加でもしないと、せっかくの昨日のキャッシュが今日のキャッシュで上書きされてしまうわけだ。
微妙に難しいところ。全ファイルの md5sum を計算するわけにもいかないし。いや、既存分はファイルにしておけばいいのか。で、新しいかどうかをそのファイルの md5sum を計算してそれがそのファイルにあるかどうかなら grep で済む。Cache にあるファイルだけなら md5sum の計算もたかが知れているかな? /data/Archive に移ったファイルを一々計算するのはほとんど不可能だが。
新規ファイルは time stamp を見れば判るのか。せいぜい2日ぶんを見ればいいのかな?
cron.daily が実行されないとかの事故率を計算しないと。
って、今どうしてたっけ。time stamp は見ていなかったような。

ls /data/Archive/galeon|wc -l
12640

なので、このくらいのファイルの grep が必要なのね。
同一ファイルがあるかないかだからファイル名は不要で md5sum 値だけが必要だと。
あ、そうか。md5sum が一致するファイルはファイル名の日付部分が違うだけのファイルなのか。

ls|xargs md5sum >> md5sum.list して判った。

もちろん、日付部分が違うと md5sum が違うファイルもあって、それこそがファイルに日付を入れた理由なんだが。
とは言うものの、そのことを利用して計算時間を減らす工夫は思いつかないんだが。
md5sum の追加もちと面倒かな?
せっかくだから、ダブっているファイルを削除して mknamazu もやりなおすとか。

 sed 's/ .*//' md5sum.list|uniq -c|wc -l
 4074
 sed 's/ .*//' md5sum.list|sort|uniq -c|wc -l 
 4056

あれ? ファイル名が(日付部分以外も)違っていて同じファイルがあるんだ。
でも、4056 種類で、12640 なら1ファイルが平均3つずつに増えているわけね。
いま 643KByte あるから、3ヶ月で 400KByte ほど無駄にしている。
それより namazu の検索結果が無駄に膨れる方の影響が多きいかな?

 sed 's/2004-..-..//' md5sum.list|uniq -c|wc -l
 4075

あれー? 日付を無視してもしなくてもファイルの uniqueness が変化しない? ってことは日付が変わったらファイル名も変っているはず?
変だな。「はてな」でヒドい目にあったから日付を入れるようにしたはずなんだが。
おお「なつみかんガイド」に至っては 77個も同一なファイルがある。
tab が開きっぱなしだからかな。
掲示板でがトップページしかキャッシュされないのが問題なんだっけ。いや、これは日付とは無関係だな。
日付を入れるようにしたのは 6月17日のように見える。(/backup の time stamp から判断)

diff /backup/2004/06/1[78]/matznaga/bin/copy-cache

うん、間違いない。そしたら、この日の(localな)日記に何か書いてるはず。
あれ? 何も書いてない。普通、こういう変更をすれば何か書いているはずなんだが。
ああ、2004-06-15 に、overwrite 云々の記述があって、2004-06-16 に日付を入れるアイディアについて触れてある。で実際に変更したのが 2004-06-17 ということだな。
このときの推論が間違っていたってことかしら。
さて、日付部分だけが違うファイルは全て同一の md5sum を持つのであれば、同一ファイルの削除は簡単だね。temporary directory へ

cp $i temp/`echo $i|sed 's/2004-..-..//'` 

すればいいはず。
(mv だと間違っていたときに困るから cp あ、ついでに touch -r $i も しおてかないと、いや cp -p でいいのかな?)
で、チェックしてよければ mv で戻して mknamazu をやり直せばいいと。
ホントかな? 少し考えてみよう。

キャッシュのファイル名が違って内容が同じファイルは、galeon が落ちて restart したときに発生するのかな?