压缩和解压缩
主要针对单个文件压缩,而非目录
compresse 和 uncompress
此工具来自于ncompress包,此工具目前已经很少使用
对应的文件是 .Z 后缀
格式
compress Options [file ...]
uncompress file.Z #解压缩
常用选项
-d 解压缩,相当于uncompress
-c 结果输出至标准输出,不删除原文件
-v 显示详情
范例
[22:14:48 root@centos7 ~]#compress anaconda-ks.cfg
[22:15:21 root@centos7 ~]#ls
anaconda-ks.cfg.Z test1.log
[22:15:23 root@centos7 ~]#compress -d anaconda-ks.cfg.Z
zcat file.Z 不显式解压缩的前提下查看文本文件内容
范例
[22:18:24 root@centos7 ~]#zcat anaconda-ks.cfg.Z > a.txt
gzip和unzip
来自于 gzip 包
对应的文件是 .gz 后缀
格式
gzip [OPTION]... FILE ...
常用选项
-k keep, 保留原文件,CentOS 8 新特性
-d 解压缩,相当于gunzip
-c 结果输出至标准输出,保留原文件不改变
-# 指定压缩比,#取值为1-9,值越大压缩比越大
范例
[22:22:42 root@centos7 ~]#gzip a.txt
[22:23:29 root@centos7 ~]#ll -h
total 104K
-rw-------. 1 root root 1.6K Jul 29 08:32 anaconda-ks.cfg
-rw-r--r--. 1 root root 100K Aug 10 22:21 a.txt.gz
-rw-r--r--. 1 root root 0 Aug 10 19:37 test1.log
#解压缩
[22:26:53 root@centos7 ~]#gunzip a.txt.gz
#不显式解压缩的前提下查看文本文件内容
[22:27:04 root@centos7 ~]#zcat a.txt.gz > a.txt
#指定压缩等级
[22:29:07 root@centos7 ~]#gzip -6 a.txt
#保留源文件
[22:29:07 root@centos7 ~]#gzip -k a.txt
范例
gzip -c messages >messages.gz
gzip -c -d messages.gz > messages
zcat messages.gz > messages
cat messages | gzip > m.gz
bzip2和bunzip2
来自于 bzip2 包
对应的文件是 .bz2 后缀
格式
bzip2 [OPTION]... FILE ...
常用选项
-k keep, 保留原文件
-d 解压缩
-c 结果输出至标准输出,保留原文件不改变
-# 1-9,压缩比,默认为9
范例
bunzip2 file.bz2 解压缩
bzcat file.bz2 不显式解压缩的前提下查看文本文件内容
xz和unxz
来自于 xz 包
对应的文件是 .bz2 后缀
选项
-k keep, 保留原文件
-d 解压缩
-c 结果输出至标准输出,保留原文件不改变
-# 压缩比,取值1-9,默认为6
范例
unxz file.xz 解压缩
xzcat file.xz 不显式解压缩的前提下查看文本文件内容
zip和unzip
zip 可以实现打包目录和多个文件成一个文件并压缩,但可能会丢失文件属性信息,如:所有者和组信息,一般建议使用 tar 代替
分别来自于 zip 和 unzip 包
选项
-A:调整可执行的自动解压缩文件;
-b<工作目录>:指定暂时存放文件的目录;
-c:替每个被压缩的文件加上注释;
-d:从压缩文件内删除指定的文件;
-D:压缩文件内不建立目录名称;
-e:加密;
-f:此参数的效果和指定“-u”参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中;
-F:尝试修复已损坏的压缩文件;
-g:将文件压缩后附加在已有的压缩文件之后,而非另行建立新的压缩文件;
-h:在线帮助;
-i<范本样式>:只压缩符合条件的文件;
-j:只保存文件名称及其内容,而不存放任何目录名称;
-J:删除压缩文件前面不必要的数据;
-k:使用MS-DOS兼容格式的文件名称;
-l:压缩文件时,把LF字符置换成LF+CR字符;
-ll:压缩文件时,把LF+cp字符置换成LF字符;
-L:显示版权信息;
-m:将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中;
-n<字尾字符串>:不压缩具有特定字尾字符串的文件;
-o:以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同;
-p:管道;
-P:指定密码加密压缩;
-q:不显示指令执行过程;
-r:递归处理,将指定目录下的所有文件和子目录一并处理;
-S:包含系统和隐藏文件;
-t<日期时间>:把压缩文件的日期设成指定的日期;
-T:检查备份文件内的每个文件是否正确无误;
-u:更换较新的文件到压缩文件内;
-v:显示指令执行过程或显示版本信息;
-V:保存VMS操作系统的文件属性;
-w:在文件名称里假如版本编号,本参数仅在VMS操作系统下有效;
-x<范本样式>:压缩时排除符合条件的文件;
-X:不保存额外的文件属性;
-y:直接保存符号连接,而非该链接所指向的文件,本参数仅在UNIX之类的系统下有效;
-z:替压缩文件加上注释;
-$:保存第一个被压缩文件所在磁盘的卷册名称;
-<压缩效率>:压缩效率是一个介于1~9的数值。
范例
#打包并压缩
[08:26:49 root@centos7 data]# zip etc.zip /etc/
#不包括目录本身,只打包目录内的文件和子目录
[08:26:49 root@centos7 data]cd /etc/sysconfig; zip -r /root/sysconfig.zip *
#默认解压至当前目录
[08:26:49 root@centos7 data]# unzip /backup/sysconfig.zip
#解压缩至指定目录,如果指定目录不存在,会在其父目录(必须事先存在)下自动生成
[08:26:49 root@centos7 data]# unzip /backup/sysconfig.zip -d /tmp/config
# 其它压缩方式
[08:26:49 root@centos7 data]# cat /var/log/messages | zip messages -
# -p表示管道
[08:26:49 root@centos7 data]#unzip -p message.zip > message
范例:交互式加密和解密
[08:56:11 root@centos7 ~]#zipEnter password:
Verify password:
adding: anaconda-ks.cfg (deflated 46%)
adding: a.txt (deflated 100%)
adding: test1.log (stored 0%)
[08:56:41 root@centos7 ~]#unzip root.zip
Archive: root.zip
[root.zip] anaconda-ks.cfg password:
范例: 非交互式加密和解密
[09:07:02 root@centos7 ~]#zip -P 123456 root.zip *
adding: anaconda-ks.cfg (deflated 46%)
adding: a.txt (deflated 100%)
adding: test1.log (stored 0%)
[09:07:41 root@centos7 ~]#mv root.zip /tmp/
[09:07:55 root@centos7 ~]#cd /tmp/
[09:07:59 root@centos7 tmp]#unzip -P 123456 root.zip
Archive: root.zip
inflating: anaconda-ks.cfg
inflating: a.txt
extracting: test1.log
打包和解包
tar
tar 即 Tape ARchive 磁带归档,可以对目录和多个文件打包一个文件,并且可以压缩,保留文件属性不丢失,常用于备份功能,推荐使用
对应的文件是 .tar 后缀
格式
tar [-ABcdgGhiklmMoOpPrRsStuUvwWxzZ][-b <区块数目>][-C <目的目录>][-f <备份文件>][-F