DVD-RAMをsquashfsにする

せっかくなのでDVD-RAMを直接squashfsにしてみた。-noappendをつけないと怒られる。

mksquashfs  /home/rubikitch /dev/dvd -noappend

/etc/fstabに以下の設定を加えておいて、 mount /backup するとDVD-RAM内のsquashfsが見える。

/dev/dvd /backup   squashfs noauto,user              0       0

ついでにCD-RWで実験してみたら、CD-RWでもいきなりsquashfsにすることができた。iso imageのかわりにsquashfs imageを渡してあげるだけ。邪道なんかなぁ?

squashfsによるバックアップ開始

/home/rubikitch以下をCD-RW

cronにやらせている毎日のバックアップをafioからsquashfsに切り換えた。
1.1GB→400MB。mksquashfsに約6分。出力の途中のbugってなんだ?とてつもなく気持ち悪いんだけど。

Parallel mksquashfs: Using 1 processor
Creating little endian 3.0 filesystem on rubikitch.squashfs, block size 65536.
.
   0 MB .......... .......... .......... .......... .......... ..........
  60 MB .......... .......... .......... .......... .......... ..........
 120 MB .......... .......... .......... .......... .......... ..........
 180 MB .......... .......... .......... .......... .......... ..........
 240 MB .......... .......... .......... ....bug
...... .......... ..........
 300 MB .......... .......... .......... .......... .......... ..........
 360 MB .......... .......... ....
Little endian filesystem, data block size 65536, compressed data, compressed metadata, compressed fragments
Filesystem size 394269.46 Kbytes (385.03 Mbytes)
        33.56% of uncompressed filesystem size (1174858.31 Kbytes)
Inode table size 722122 bytes (705.20 Kbytes)
        33.66% of uncompressed inode table size (2145150 bytes)
Directory table size 620497 bytes (605.95 Kbytes)
        48.45% of uncompressed directory table size (1280731 bytes)
Number of duplicate files found 6174
Number of inodes 65359
Number of files 58149
Number of fragments 5449
Number of symbolic links  684
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 6526
Number of uids 2
        rubikitch (1001)
        root (0)
Number of gids 2
        users (100)
        rubikitch (101)

あとはmkisofsとcdrecordでいつものように焼くだけ。

DVD-RAMへバックアップ

mksquashfs /home/rubikitch /home/cvs /home/svn  /vmlinuz*  /home/local /var/filelist /bin /boot /lib /sbin /etc /home/svnbackup /dev/dvd -noappend

DVD-RAMは容量があるので、システムもバックアップ。以前は無圧縮で格納していたが、圧縮されるので以前はあふれていたものもバックアップ。/home/localは/usr/local。

3.7GB→1.8GB。圧縮率はいまいちで半分ほど。
これがえらい時間がかかる。90分。DVD-RAMに直接書き込んでるせいなのか、mksquashfsそのもののせいなのかはわからない。bugがたくさん出ているので少し不安。

Parallel mksquashfs: Using 1 processor
Creating little endian 3.0 filesystem on /dev/dvd, block size 65536.
.
   0 MB .......... .......... .......... .......... .......... ..........
  60 MB .......... .......... .......... .......... .......... ..........
 120 MB .......... .......... .......... .......... .......... ..........
 180 MB .......... .......... .......... .......... .......... ..........
 240 MB .......... .......... .......... .......... .......... ..........
 300 MB .......... .......... .......... .......... .......... ..........
 360 MB .......... .......... .......... .......... .......... .....bug
bug
.....
 420 MB .......... .......... .......... .......... .......... ..........
 480 MB .......... .......... .......... .......... .......... ..........
 540 MB .......... .......... .......... .......... .......... ..........
 600 MB .......... .......... .......... .......... .......... ..........
 660 MB .......... .......... .......... .......... .......... ..........
 720 MB .......... .......... .......... .......... .......... ..........
 780 MB .......... .......... .......... .......... .......... ..........
 840 MB .......... .......... .......... .......... .......... ..........
 900 MB .......... .......... .......... .......... .......... ..........
 960 MB .......... .......... .......... .......... .......... ..........
1020 MB .......... .......... .......... .......... .......... ..........
1080 MB .......... .......... .......... .......... .......... ..........
1140 MB .......... .......... .......... .......... .......... ..........
1200 MB .......... .......... .......... .......... .......... ..........
1260 MB .......... .......... .......... .......... .......... ..........
1320 MB .......... .......... .......... .bug
.bug
bug
........ .......... ..........
1380 MB .......... .......... .......... .......... .......... ..........
1440 MB .......... .......... .......... .......... .......... ..........
1500 MB .......... .......... .........bug
bug
bug
bug
bug
bug
bug
bug
bug
. bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
.......... .......... ..........
1560 MB .......... .......... .......... .......... .......... .......bug
bug
bug
bug
...
1620 MB .......... .......... .......... .......... .......... ..........
1680 MB .......... .......... .......... .......... .......... ..........
1740 MB .......... .......... ..
Little endian filesystem, data block size 65536, compressed data, compressed metadata, compressed fragments
Filesystem size 1805334.48 Kbytes (1763.02 Mbytes)
        48.62% of uncompressed filesystem size (3712924.43 Kbytes)
Inode table size 2332240 bytes (2277.58 Kbytes)
        28.74% of uncompressed inode table size (8115004 bytes)
Directory table size 2179803 bytes (2128.71 Kbytes)
        47.08% of uncompressed directory table size (4630264 bytes)
Number of duplicate files found 30637
Number of inodes 228491
Number of files 185229
Number of fragments 13099
Number of symbolic links  13323
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 29939
Number of uids 8
        root (0)
        rubikitch (1001)
        t (1000)
        unknown (8482)
        games (5)
        unknown (2549)
        unknown (10001)
        unknown (501)
Number of gids 8
        users (100)
        snort (109)
        bin (2)
        mail (8)
        staff (50)
        root (0)
        uucp (10)
        rubikitch (101)

きちんとバックアップしている人は少ない

http://www.ipa.go.jp/security/fy18/reports/ishiki02/press.html

情報セキュリティに関する新たな脅威に対する意識調査(2006年度第2回)によると、バックアップを取ってる人はわずか44.9%。そのうち毎日バックアップしている人は3.9%。全体からみればわずか1.7%。いかに危機意識というものが希薄なのかがわかる。
俺の場合はPCはつけっぱなしで寝ている間に毎日cronでCD-RWDVD-RAMにバックアップしている。CD-RWを入れ替える以外全自動である。

バックアップを手動でやると「面倒だからやりたがらない→頻度が落ちる→無計画になる→データ喪失時に必要なバックアップが見つからない&最近の更新が失われる」の悪循環になってしまう。そうなるのを防ぐには、PCをつけっぱなしにして自動でバックアップをやらせるのがいいと思う。失ったデータは戻ってこないので、余計な電気代は保険という意味で。

Unix系OSの場合、大事なデータはホームディレクトリに集中しているから最低限そこだけ(欲を言えば/usr/localも)取れる。バックアップ不要なディレクトリはホームディレクトリの外に置くなどバックアップを考えたディレクトリ配置をしておけばCD-RWやDVD1枚で十分バックアップが取れる。
windozeの場合はどうしてもデータが散らかるのでバックアップターゲットが決まりにくいだろう。かといってフルバックアップなんてしようものならDVDが何枚あっても足りない。これがバックアップを遠ざける遠因なのかもしれない。

zshの小技

色つきechoのシェル関数

今更ながら。

echo-red () { echo -n '\033[31m'; echo "$@"; echo -n '\033[0m' }
echo-green () { echo -n '\033[32m'; echo "$@"; echo -n '\033[0m' }
echo-yellow () { echo -n '\033[33m'; echo "$@"; echo -n '\033[0m' }
echo-blue () { echo -n '\033[34m'; echo "$@"; echo -n '\033[0m' }
echo-magenta () { echo -n '\033[35m'; echo "$@"; echo -n '\033[0m' }
echo-cyan () { echo -n '\033[36m'; echo "$@"; echo -n '\033[0m' }

コマンドの開始時刻と終了時刻を表示

いつどんなコマンドを実行したかが一目わかるように開始時刻と終了時刻を表示してみた。

precmd () { echo-blue `date` }
preexec () { echo-red `date` }

precmdはプロンプトに戻る直前に実行、preexecはコマンド実行直前に実行されるシェル関数。