|
| ||||||||
|
巻き戻し中。
|
|
2009-02-21(土) 崩壊? [長年日記]
_ 会社端末
Thunderbirdのメールスプールが破損の模様。
受信箱の先週以前のメールが読み出せない。
大抵のメールはサブフォルダに仕分けてあるので無事だが、未処理&急ぎのメールは100通弱を受信箱に残している。
確か、暗号化キーを受信途中に引っこ抜いた記憶があるからそれだな。*1
のてぱどで開くと、あるところから解読不能。
幸いにもThunderbirdはインデックスと本分が別ファイルなので、どのメールからおかしいかリストは読める。
丁度年明けから先週ね。
POPでサイボウズと共用するためにサーバー上のスプールは7日間はThunderbirdからの削除を遅延させているけど、年明けは既に残ってないな。
えっと、バックアップは・・・
年末じゃん。_|‾|○ ガクガク
えーっと、他に手段は。。。?
*1 無理矢理ファイルに暗号掛けてるから仕様なんですわ。
_ (‾ー+‾)キラーン
をを、我が社はサイボウズも使っておる。
ってことは、サイボウズのメールファイルから加工するべ。
確か、メールごとの番号ファイルになってるけどスプールと同じようなフォーマットだった希ガス。
[WWW-root]/cgi-bin/cbag/[hoge]/file/Personal/[ID]/
覗いたら、過去10年近くのメールが約18,000通*1ほど溜まってるw
まずは1月と2月のファイルを
ls -lg 2*| grep -v 200. | awk '{if ($6 == "Jan" || $6 == "Feb") system ("cp -p "$9" ./tmp")}'
でtmpにコピー。*2
うぅ、960通もあるわ。。・゜・(ノД`)・゜・
さて、このまま「cat >> hoge」でスプール作って読めるかな?と思ったら甘いのね。
1.最初の「空行+Fromで始まる(From [アドレス] [日付])」行が無い。
2.改行がCR+LFに変換されとる。
3.Date:から1行目用に日付を引っ張ると形式が複数あって変換しきれない。
こんなの手で書き換えてらんない。要は、何某かフィルタせねばならぬ。
日付は
Mon, 9 Feb 2009 12:56:20 +0100
18 Feb 2009 00:10:24 +0900
と言った2種類が混在。
条件をよく考えながら、こんなshellを書いた。
もうね、面倒だから後者のパターンの曜日は「Mon」固定。
どうせ、Thunderbirdが日付で計算してくれると信じて。
いやいや、曜日の後ろにあるカンマが邪魔だったり、日付は2桁じゃないとイヤだったり( ゜Д゜)マンドクセー
if文の後のexitは、これがないと最初のFrom:やDate:以外に本文中に同じのがあると拾っちゃうから。
当然ながらprint文だと改行しちゃうので、1行に納めるためにprintf文で「\n」を書かない仕掛け。
テンポラリのファイルに1行目を作ったら、そのお尻にCR+LFのCRを取っ払いつつファイルをappendする。
最後に1個のファイルにどんどん追記と。
で、こいつをconv-spool.shとかで保存して、
ls -T 2* | awk '{system ("./conv-spool.sh "$1)}'
で引数にファイル名を与えながら一気にスプール作成。
鯖のスプールを一時的に置き換えて、無事960通を端末から取得して手動で必要な100通ほどをピックアップ。
┐(´д`)┌ ヤレヤレ
#!/bin/sh cat $1 | awk '{if ( $1 == "From:" ) {print $0;exit}}' | awk -F"<|>" '{printf "%s ", "From "$2}' > tmp.$1.addr cat $1 | awk 'sub(",","")'| awk '{if ( $1 == "Date:" ) {if ( $5 == "2009" ) \ {printf "%s %s ",$2,$4;printf "%.2d",$3;print " "$6" "$5;exit} \ else {printf "Mon %s ",$4;printf "%.2d ",$3;print " "$6" "$5;exit}}}' >> tmp.$1.addr cat $1 | awk 'sub(/\r$/,"")' >> tmp.$1.addr cat tmp.$1.addr >> hogehoge2 rm tmp.$1.addr
Tweets by RC31E | |||||||||
| |||||||||
| |||||||||
|