2006/09/03 (Sun)
夕方から学校へ忘れ物を取りに行く。
なんで忘れもんしたんだろ(:_;)
家でゆっくりしたかったのに(^^;
squidのキャッシュから何がキャッシュされてるか調べるスクリプト作ってみた。
store.logから構成するのが筋なんだろうけど、store.logそんなに残してられるかつーの(^^;
使い方によってはプライバシー侵害しまくれそうなので妖注意。
大昔の恥ずかしいものがキャッシュされてることが判明したりしてもあたしは知りません。
当然動作保証もしません。
squidcacheperse.pl
#!/usr/local/bin/perl
$cachedir="/var/squidcache";
$cachedir=$cachedir."/*/*/[0-9A-F][0-9A-F][0-9A-F][0-9A-F][0-9A-F][0-9A-F][0-9A-F][0-9A-F]";
@files=glob($cachedir);
foreach(@files) {
$file=$_;
open(IN,$file) || next;
$log_bytes = read IN, $data, 1;
$log_bytes = read IN, $data, 4;
$size = unpack("I",$data)-5;
$pos=1;
while($pos < $size) {
$log_bytes = read IN, $data, 1;
$type = unpack("c",$data);
$log_bytes = read IN, $data, 4;
$isz = unpack("I",$data);
$log_bytes = read IN, $data,$isz;
$pos+=5+$isz;
if ($type == 3) {
$md5=unpack('H*',$data);
}
if ($type == 4) {
$uri=unpack('Z*',$data);
chomp $uri;
}
if ($type == 5) {
#time stamp,time last ref.,time expire,time object modified,size,ref. time,flg
@stat = unpack('iiiiISS',$data);
}
}
close(IN);
print $uri."\n";
}
要らないオブジェクトパージするときにでも使ってくれい。
squidcacheperse.pl | grep \.zip$ | xargv -L1 squidclient -m PURGE -p 3128
みたいな感じで。
20万オブジェクト有ると、サーチに20分程度かかるようです。