squashfs で高圧縮、堅牢にバックアップ

squashfs が良いらしい

自宅や会社でサーバ立てまくったり、HDD を交換するために OS を移動したり、USB メモリや SD カードにインストールを試してみたり等何かと OS のバックアップ・リストアが必要になることが多い。今までは単純な cp から始まり、rsync、dd、tar、たまに Windows で FireFileCopy や xcopyrobocopy と色々使って来たけれど、今日は squashfs というファイルシステムにバックアップするコマンドを知ったので試してみる。

利点

  • squashfs-lzma という、7-zip でも採用されている LZMA 方式で圧縮しているため圧縮効率が高い。(だいたい容量が 1/3 程度まで圧縮される)
  • ファイルシステムとして作成するので、昔はよく使われていた tar.gz での圧縮より堅牢性が高い。具体的には、tar.gz もとい tar 形式は 1 バイトでも破損すると全ファイルが参照出来なくなるのに対し、squashfs ならばどこかのファイルが破損したとしても他のファイルには影響を与えない。ファイルシステムなので。

インストール (Ubuntu 10.04 LTS)

テキトーに apt-get しちゃって下さい。*1

sudo apt-get install squashfs-tools

使ってみる

バックアップ
mksquashfs ./backup_root hogehoge_backup.squashfs -noappend
リストア*2
mount -t squashfs -o ro,loop hogehoge_backup.squashfs /mnt/tmp

使用感

実際に 1GB 程度のインストールしたての Ubuntu システムパーティションを圧縮してみたところ、300MB くらいで保存できた。確かに圧縮率高いわ。
あとはリストアがうわさ通り行えるならば完璧なんだけど、リストアできる環境の空きがないのでまだ未検証。vmware とかで後で試してみるか。
tar とかと違ってまだまだ標準化されてないのが今のところのデメリットかなー。7-zip もそうだけど LZMA ってイマイチ知られていない気がする。最高圧縮とかやると圧縮にすげー時間がかかるとかが不人気の理由の一つかしら。

*1:そういえば apt-get は aptitude の後継と聞いているので僕は apt-get を使っているのですが、「apt-get は管理がショボイ、aptitude を使うべき」という意見を小耳に挟みました。そうなの?

*2:今日初めて使ってみたところなので、実はまだリストアは試してない。まーちゃんと動くんじゃないの(危険