转自http://chentingjia.iteye.com/blog/643089
原本有一个 30G 的稀疏文件 file.img,实际占用 3.5G 的空间。但压缩成 file.img.tar.gz 后再解压出来,发现实际占用了 30G 空间,稀疏文件不稀疏了。为什么呢?原来是因为在压缩时没有加上 -S 参数。此参数的作用是指明被压缩文件是一个稀疏文件,如果没有这个参数,程序会填充稀疏文件,导致变成了一个普通文件。
因此,以后在压缩稀疏文件时需要加上 -S 参数:
- # tar zcSf file.img.tar.gz file.img
这样再解压就仍是一个稀疏文件:
- # tar zvxf file.img.tar.gz
- # du file.img -h
- 3.5G file.img
如果现在已经变成普通文件,则可以通过 cp 命令来进行转换:
- # du file.img -h
- 30G file.img
- # cp --sparse=always file.img file.img.sparse
- # du file.img.sparse -h
- 3.5G file.img.sparse