转:http://blog.itechol.com/space-752-do-blog-id-5801.html
简介:
squashfs是一种只读型的超高压缩率文件系统,这种文件系统能够将2GB-3GB的数据压缩成一个700MB的文件。你有没有想过Linux Live CD是怎样运行的?当Live CD启动后,它会加载一个完整的linux环境。这就是利用了一种被称为squashfs的制度型压缩文件系统。它将根本文件系统保存在一个压缩过的文件系统文件中。这个文件可以使用环回的形式来挂载并对其中的文件进行访问。因为当进程需要某些文件,可以将它们解压,然后载入内存中使用。如果需要构建一个定制的Live OS,或是需要使用超高压缩率的文件并且无需解压就可以访问文件,那么squashfs的相关只是就能派的上用场。要解压个头较大的压缩文件,那可得花上一阵功夫。但如果将文件以环回形式挂载,速度就会飞快,因为只有出现访问请求的时候,对应的部分压缩文件才会被解压缩。而普通压缩方式是首先解压缩所有的数据。让我们来看看如何使用squashfs。
squashfs是一种只读型的超高压缩率文件系统,这种文件系统能够将2GB-3GB的数据压缩成一个700MB的文件。你有没有想过Linux Live CD是怎样运行的?当Live CD启动后,它会加载一个完整的linux环境。这就是利用了一种被称为squashfs的制度型压缩文件系统。它将根本文件系统保存在一个压缩过的文件系统文件中。这个文件可以使用环回的形式来挂载并对其中的文件进行访问。因为当进程需要某些文件,可以将它们解压,然后载入内存中使用。如果需要构建一个定制的Live OS,或是需要使用超高压缩率的文件并且无需解压就可以访问文件,那么squashfs的相关只是就能派的上用场。要解压个头较大的压缩文件,那可得花上一阵功夫。但如果将文件以环回形式挂载,速度就会飞快,因为只有出现访问请求的时候,对应的部分压缩文件才会被解压缩。而普通压缩方式是首先解压缩所有的数据。让我们来看看如何使用squashfs。
1.1 预备知识
如果你有一张Ubuntu CD,可以在CDRom ROOT/casper/filesystem.squashfs中找到文件.squashfs。squashfs在内部采用了gzip和lzma这类压缩算法。所有最新的linux发行版本都支持squashfs。但要想创建squashfs文件,需要额外安装squshfs-tools软件包。该包在系统盘内有。
1.2 实战演练
通过添加源目录和文件,创建一个squashfs文件:
$ mksquashfs SOURCES test.squashfs
SOURCES部分可以使用通配符或文件、目录路径。
例如:
$ mksquashfs /var/ var.squashfs
Creating little endian 3.0 filesystem on var.squashfs, block size 65536.
$ mksquashfs /var/ var.squashfs
Creating little endian 3.0 filesystem on var.squashfs, block size 65536.
Little endian filesystem, data block size 65536, compressed data, compressed
metadata,compressed fragments
metadata,compressed fragments
还有更多细节信息会出现在终端上。犹豫版面的限制,这里就不在列出这些信息了。详情自查。
要挂载squashfs文件,利用环回形式进行挂载:
$ mkdir /mnt/squashfs
$ mount -t squashfs -o loop var.squashfs /mnt/suqashfs
你可以通过/mnt/squashfs复制其中的内容。
1.3 补充内容
可以指定额外参数来创建squashfs文件系统。让我们来看一些其他的命令选项。
在创建squashfs文件时排除部分文件
创建squashfs文件时,我们可以排除部分文件,这些文件可以用文件列表形式指定,也可以用通配符来指
定。
定。
使用选项-e,将需要排除的文件列表以命令行参数的方式来指定。例如:
$ mksquashfs /etc test.squashfs -e /etc/passwd /etc/shadow
其中,选项-e用于排除文件passwd和shadow。
也可以将需要排除的文件名写入文件,然后用-ef指定该文件:
$ cat excludelist
/etc/passwd
/etc/shadow
$ mksquashfs /etc/ test.squashfs -ef excludelist
如果希望在排除文件列表中使用通配符,那么可以使用-wildcard选项。