AWS Glacier と写真のサムネール
たくさんの写真を保管するとき、ローカルの DVD-R だけでは不安なので、Amazon AWS Glacier を使うことを考えています。Glacier は保管は安いのですが、あとで取り出すのがやや高価なのが難点です。特に、でかいファイルを取り出すのは現実的でないです。
そこで、DVD-R には tar 形式で焼いても、Glacier には JPEG のまま置くことを考えました。
そこで問題になるのは、あとで欲しい写真があったとき、どの画像が目的の写真だか分からなくなることです。これを解決するにはサムネール画像をまとめておけば良いのですが、簡単な方法はないでしょうか。
調べて使えそうだったのは、ImageMagick の montage コマンドでした。これはなかなか優れものなのですが、大量の JPEG ファイルからでかいサムネールを作るのは想定外のようで、メモリを大量に消費して動けなくなります。
しょうがないので、AWK から制御することにしました。具体的には、次のようなスクリプトを書きました。とりあえずこれで目的を達成したので、montage を深追いするのはヤメにします。
#!/bin/sh list=`ls *.[jJ][pP][gG] | egrep -v '^thumb_.*\.jpg$'` md5 * | tee md5.txt ls -l > ls.txt exif $list > exif.txt ls $list | awk ' BEGIN { n_items = 100 n = 0 tn = 0 } { list[n] = $0 n ++ } n >= n_items { print "@", n my_proc() } END { my_proc() } function my_proc() { s = "montage -verbose -auto-orient -tile 10x -label %t " for (i = 0; i < n; i ++) s = s list[i] " " s = s "thumb_" sprintf("%03d", tn) ".jpg" # print s system(s) n = 0 tn ++ }'