2017-08-11 19:34:09 @惟愿此心无怨尤
今天对linux中文件的压缩与打包的常用方法进行简单的总结
文件的压缩主要有 compress、gzip、bzip2、xz、zip
由于几个常用的压缩命令用法都大致相同,我就一起总结,然后再分别区分它们的差异
压缩命令常用如下
compress: 后缀为.z,可用unconpress解压,保持原文件权限,可用zcat查看压缩文件内容并不解压,所以可以用重定向符进行导出,相当于保持源文件进行解压,但是权限会变,因为是创建了新文件。
gzip: 后缀为.gz,可以指定压缩级数 -1到-9.越大压缩效果越好,可以用gunzip进行解压,用zcat同上述进行保持源文件解压操作。
bzip2: 后缀为.bz2,口语指定压缩级数,可用bunzip2进行解压,可用bzcat进行同上述zcat同样的操作,-k选项,表示保持源文件并且压缩。
上述3个压缩命令 共有选项:
-v显示操作的细节
-d解压
-c 查看压缩文件内容
xz: -k表示保持源文件进行压缩;-d 表示解压;xzcat同zcat和bzcat,不再赘述。
zip: zip -r 压缩后名字 需要压缩的文件
解压 unzip filename
对各个压缩命令测试如下
/app下创建一个5个25M的文件,分别用这5个压缩命令进行压缩,查看压缩效果
可以看到就压缩效果而言xz最好,其次是bzip2,在时间上面,也是xz较快,其实man一下xz的帮助文档也可以发现,xz的最低压缩比也比其余的压缩效果好,而且速度较快。
zip可以实现文件的打包同时压缩,其实就是同时操作多个文件,其他关于他们的其他用法有兴趣的童鞋可以自行查看文档或者相关资料学习。
tar进行打包操作
语法格式 tar 自定义包的名字 需要打包的文件名
常用功能选项如下
-c 创建包
-f 指定新名字
-rf 在包中追加新文件
-tf 查看包中文件
-v 列出详细信息
--delete -f 从包中删除某文件
-x 从包中提取文件
-C 指定在新目录解包
测试如下,复制四个文件到/app下,进行以下测试操作
对这四个文件进行打包,发现并没有删除源文件
在包中添加文件createsh.sh,发现也没有删除源文件
在包中删除文件createsh.sh,实现如下
从包中抽取文件passwd,实际测试发现 抽取后在包中这个文件还是存在
将包中全部文件抽取在当前目录下的dir目录中,源包也没有删除
扩展:(也是经常使用的同时进行打包和压缩操作)
-Jcf 打包并且压缩为.xz
-jcf 打包并且压缩为.bz2
-zcf 打包并且压缩为.gz
测试如下
进行打包并且压缩操作,然后用file命令对进行操作后的文件行进类型的查看,发现如预料一样。
ps:
1、linux中文件名字没有后缀的限制,但是对于以上的压缩和打包操作的文件名字,大家可以自行测试一下,若名字不是指定名字还能不能进行解压操作,经过笔者测试,若名字不是对应的后缀而进行解压操作,不会进行解压操作或者将该压缩文件保留,重新生成一个解压后的文件,有兴趣的童鞋可以自行测试。
2、对于以上进行的打包压缩操作,都没有对文件的权限进行改变,若用重定向符生成新文件来进行的解压操作才会改变文件的权限,因为生成了新文件,权限为默认权限减去umask的值,有兴趣童鞋可以查阅相关资料。