压缩后缀
后缀名 | 压缩程序 |
---|---|
.z | compress 程序压缩文件 |
.zip | zip 程序压缩文件 |
.gz | gzip 程序压缩文件 |
.bz2 | bzip2 程序压缩文件 |
.xz | xz 程序压缩文件 |
.tar | tar 程序打包文件,没有经过压缩 |
.tar.gz | tar 程序打包,经gzip压缩 |
.tar.bz2 | tar 程序打包,经bzip2压缩 |
.tar.xz | tar 程序打包,经xz压缩 |
tar程序只具有打包功能,将多个文件组合为单个文件。后来与压缩功能结合在一起,同时具有打包和压缩功能。
gzip
gzip 可处理compress,zip,gzip的压缩文件
- -k 解压,压缩时保留源文件
- -d 解压缩,不加此参数为压缩
- -t 检验压缩文件是否完好
- -num num为数字1-9,数字越大,压缩比越高,速度越慢。默认为6
- -v 查看压缩比
- -c 将压缩后的数据输出到标准输出,保留原始文件
# 压缩显示压缩比
$ gzip -v loss_acc_10
loss_acc_10: 81.8% -- replaced with loss_acc_10.gz
# 解压缩
$ gzip -d loss_acc_10.gz
# 设置压缩等级,这里压缩比的提高应该与源文件内容格式相关
$ gzip -9 -v loss_acc_10
loss_acc_10: 82.7% -- replaced with loss_acc_10.gz
# 指定压缩后的文件名(通过重定向)
$ gzip -c loss_acc_10 > tmp.gz
zcat, zless, zmore, zgrep分别与cat, less, more, grep功能类似。
# zcat 查看压缩文件。
$ zcat loss_acc_10.gz
epoch:0,cnt:1,time:2019-05-15 10:40:33, loss:0.69185
epoch:0,cnt:2,time:2019-05-15 10:41:02, loss:0.69262
...
bzip2
bzip2 相对于gzip具有更好的压缩比
- -k 解压,压缩时保留源文件
- -z 表示压缩,可不加
- -d 表示解压缩
- -t 检验压缩文件是否完好
- -num 设置压缩等级
- -v 显示压缩比
- -c 压缩数据定向到标准输出,保留源文件
bzip2,bzcat,bzmore,bzless,bzgrep与gzip相应命令功能相似
xz
xz 相对于bzip2有更好的压缩比
- -k 解压,压缩时保留源文件
- -z 表示压缩,可不加
- -d 表示解压缩
- -t 检验压缩文件是否完好
- -num 设置压缩等级
- -c 压缩数据定向到标准输出,保留源文件
- -l 显示压缩文件相关信息
- -v 显示当前进度,压缩比,压缩速率, 运行时间, 预计运行时间等
$ xz -v google300wv.bin
google300wv.bin (1/1)
0.4 % 5,040.4 KiB / 12.6 MiB = 0.391 1.0 MiB/s 0:12 56 min
压缩程序对比
一般情况下:
压缩效果: gzip < bzip2 < xz
耗时:gzip < bzip2 < xz
tar
以上压缩程序仅能对单个文件进行压缩,无法像windows下那样对目录进行压缩。
- -c 建立打包文件
- -x 从包中提取文件
- -v 显示打包,解包处理中的文件
- -t 查看打包文件中含有的文件名
- -f 指定要处理的打包文件或要生成的打包的文件
- -z 通过gzip压缩,解压缩
- -j 通过bzip2压缩,解压缩
- -J 通过xz压缩,解压缩
- -C 指定目录,一般用于解包中指定特定目录
- -p 保留文件权限,属性。一般用于备份
- -P 保留文件名的第一个斜线。
- --exclude=FILE 不打包FILE文件
常用命令
- 打包,压缩文件。
tar -zcv -f dist_file.tar.gz src_file
- 查看包中文件名。
tar -t -f file.tar.gz
- 解压缩。
tar -zxv -f file.tar.gz -C dist_dir
解压至指定目录dist_dir(dist_dir需存在)。
$ tar -zxv -f etc.tar.gz -C etc_tmp # etc.tar.gz 解压至 etc_tmp
- 解压包文件中的某一个文件
# 可以先查看打包文件中的内容,获得需要解压文件的文件名
# 查看打包文件中的内容
$ tar -ztv -f etc.tar.gz | head -n 10
drwxr-xr-x root/root 0 2019-05-24 06:53 etc/
drwxr-xr-x root/root 0 2019-04-25 02:42 etc/modules-load.d/
-rw-r--r-- root/root 76 2019-04-25 02:43 etc/modules-load.d/mhwd-gpu.conf
...
# 查找特定内容
$ tar -zt -f etc.tar.gz | grep "netconfig"
etc/netconfig
# 解压指定文件
$ tar -zxv -f etc.tar.gz etc/netconfig #解压etc/netcofig
-P使用
- 不添加-P
$ tar -zcv -f linux_learn.tar.gz /home/xx/linux_learn
tar: Removing leading `/' from member names
/home/xx/linux_learn/
/home/xx/linux_learn/loss_acc_20
/home/xx/linux_learn/passwd
/home/xx/linux_learn/tmp.expand
/home/xx/linux_learn/passwd.linux
/home/xx/linux_learn/tmp
/home/xx/linux_learn/group
/home/xx/linux_learn/loss_acc_10
# 查看文件路径,第一个/已被删去
$ tar -t -f linux_learn.tar.gz
home/xx/linux_learn/
home/xx/linux_learn/loss_acc_20
home/xx/linux_learn/passwd
...
- 添加-P
$ tar -zPcv -f linux_learn.tar.gz /home/xx/linux_learn
tar: Removing leading `/' from member names
/home/xx/linux_learn/
/home/xx/linux_learn/loss_acc_20
/home/xx/linux_learn/passwd
...
查看文件路径,此时保留了第一个/
$ tar -tP -f linux_learn.tar.gz
/home/xx/linux_learn/
/home/xx/linux_learn/loss_acc_20
/home/xx/linux_learn/passwd
...
--exclude
打包某个目录,但不包含某些文件
# 打包/etc,为etc.tar.gz, 但不包括 /etc/netcofig
$ tar -zcv -f etc.tar.gz --exclude=/etc/netconfig /etc
参考
《鸟哥的linux私房菜》