SquashFSとは
- ファイルのバックアップ用ファイルシステム
- 特定のディレクトリを、イメージファイルへ圧縮
- 圧縮したファイルをマウント可能(リードオンリー)
たとえば、このような用途が想定される。
- 比較的容量が大きく、そしてファイル数も多量にあるディレクトリがある
- しかし、そのディレクトリはあまり使われていない。
- よって、普段はイメージファイルに圧縮してバックアップを取り、必要に応じて参照したい。
- ついでに、重要なファイルも多いためリードオンリーでマウントしたい。
私の場合は、鳥人間現役時代のファイル(700GB程度)をアーカイブ化するために用いた。もちろん、そのままNASにrsyncしてもいいのだと思う。しかし、ファイル数が多く、セクタサイズより小さいファイルも結構有ったため、馬鹿正直にバックアップを取るには正直面倒。かといってtarにしてしまうと、ファイルを参照する際いちいち展開しなければならずそれもまた面倒…。ということで、第三の道を探ったらここにたどり着いた。
インストール方法
yum install squashfs-tools
等。aptでも同様のパッケージ名だと思われる。
Macでのインストール方法
brew install squashfs
簡単な使用方法
mksquashfs /圧縮元 /圧縮先 -comp gzip
この場合圧縮先へgzipで圧縮される。圧縮方式はxz,gzip,lzoなどから選択可能。
圧縮方式の比較
- 圧縮率での比較: xz<gzip<lzo
- 展開速度での比較:lzo<gzip<xz
全体のバランスを考えるとgzip辺りにしておくのが無難らしい。
圧縮してみた
実際に圧縮してみたところ、元フォルダの75%程度の容量となった。822GBが619GBまで圧縮できたのでかなり優秀と言えるのでは。バックアップも取りやすくなった。
マウント方法
mount -o loop /バックアップファイル /MountPoint/
ファイルをあたかもデバイスのように見せかけることをループバックマウントと言うらしい。
MacOSXでのマウント
これがちょっとめんどくさい。MacOSでは標準でSquashFSをサポートしていないらしい。そこで、MacFuzeを経由したマウント方法になる。もしかしたら、カーネルにsquashFSが入っていないLinuxとかでも応用できるかもしれない。要するにNETGEARのReadyNASとか。
前提条件
導入のために、automake libtool autoconfの導入が必要。Homebrewから導入可能。
MacFuze(OSXFuze)のインストール
ココからインストーラーを落としてきてインストール。
squashfuseのコンパイル&インストール
なお、コンパイル時に導入するコマンド群のインストールのため、予めhomebrewが必要になってくる。インストール方法は
git clone http://github.com/vasi/squashfuse
./autogen.sh
configure
make
makeまで終わったら、パスが通っている位置に、squashfsをコピーする。
導入のために、automake libtool autoconfの導入が必要。
ここまで済んだら、やっとマウントできる。
バックアップの生成 mksquashfs DIRECTORY ARCHIVE
マウント squashfuse /アーカイブファイル /マウントポイント
アンマウント umount MOUNTPOINT(Mac,BSD)
fusermount -u MOUNTPOINT(Linux)
重要な注意点