博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux上的压缩与归档
阅读量:6715 次
发布时间:2019-06-25

本文共 4329 字,大约阅读时间需要 14 分钟。

非常非常非常简要的描述而已。

压缩

压缩的简要原理是通过一些算法,拿CPU的计算时间去换磁盘上存储的空间。同时还可节省网络传输中的带宽。

对于文本文件的压缩效果比较好,对二进制程序、图片等文件的压缩效果就很差。

compress, uncompress

文件名:*.Z

古老的压缩工具,目前已经不使用。

gzip, gunzip, zcat

文件名:*.gz

gzip用于压缩文件,简要语法。

# gzip [OPTION] FILE...

FILE是待压缩的文件名,可多个。

[root@C7 tmp]# ls -ltotal 364-rw-r--r--. 1 root root  18104 Jan  3  2018 functions-rw-r--r--  1 root root  22384 Apr 17 14:20 lvm_mount_point.xfsdump-rw-------  1 root root 327049 Apr 23 16:20 messages[root@C7 tmp]# gzip functions lvm_mount_point.xfsdump messages [root@C7 tmp]# ls -ltotal 64-rw-r--r-- 1 root root  5021 Jan  3  2018 functions.gz-rw-r--r-- 1 root root   769 Apr 17 14:20 lvm_mount_point.xfsdump.gz-rw------- 1 root root 50126 Apr 23 16:20 messages.gz

压缩后,会自动删除源文件,并生成.gz名称的压缩文件。

-d:用于解压缩。等同于gunzip命令。

[root@C7 tmp]# gzip -d functions.gz[root@C7 tmp]# gunzip functions.gz

同理,解压后,压缩文件消失,压缩前的源文件生成。

-# --fast --best:“#”表示一个数字,取值为1~9,表示压缩的效果。1表示最快--fast,9表示最好--best。默认是6。

-c:表示将压缩后的数据流输出到STDOUT,不会修改源文件。结合重定向可以实现压缩文件时不删除源文件。

[root@C7 tmp]# ls -l functions*-rw-r--r-- 1 root root 18104 Jan  3  2018 functions[root@C7 tmp]# gzip -c functions > functions.gz[root@C7 tmp]# ls -l functions*-rw-r--r-- 1 root root 18104 Jan  3  2018 functions-rw-r--r-- 1 root root  5021 Apr 23 16:51 functions.gz

对于文本文件压缩后的文件,是无法使用诸如cat等文本查看器直接查看了,想基于压缩文件查看的话,可使用zcat。

[root@C7 tmp]# zcat functions.gz | tail              "x$1" = xcondrestart ] ; then        systemctl_redirect $0 $1        exit $?    fifistrstr "$(cat /proc/cmdline)" "rc.debug" && set -xreturn 0

bzip2, bunzip2, bzcat

文件名:*.bz2

命令功能与用法等同于gzip系列。

在gzip中想要在压缩的时候保留源文件,需要通过-c选项结合重定向,而在bzip2中,可直接通过-k选项。

-k --keep:压缩时,不删除源文件。

[root@C7 tmp]# bzip2 -k lvm_mount_point.xfsdump[root@C7 tmp]# ls -l lvm_mount_point.xfsdump*-rw-r--r-- 1 root root 22384 Apr 17 14:20 lvm_mount_point.xfsdump-rw-r--r-- 1 root root   764 Apr 17 14:20 lvm_mount_point.xfsdump.bz2

xz, unxz, xzcat

文件名:*.xz

命令功能与用法等同于bzip2系列。含-k选项。

压缩小结

压缩效果:xz>bzip2>gzip。

可通过file命令查看压缩文件的实际/内部格式,不可以仅通过文件的扩展名来判断一个文件的类型,扩展名仅作为用户识别。

[root@C7 tmp]# file functions.gz lvm_mount_point.xfsdump.bz2 messages.xz functions.gz:                gzip compressed data, was "functions", from Unix, last modified: Wed Jan  3 00:29:40 2018lvm_mount_point.xfsdump.bz2: bzip2 compressed data, block size = 900kmessages.xz:                 XZ compressed data

 

归档

上述的压缩命令,是无法实现将多个文件合并压缩为一个压缩文件,或者针对目录进行压缩的。

[root@C7 tmp]# file init.d/init.d/: directory[root@C7 tmp]# gzip init.d/gzip: init.d/ is a directory -- ignored[root@C7 tmp]# bzip2 init.d/bzip2: Input file init.d/ is a directory.[root@C7 tmp]# xz init.d/xz: init.d/: Is a directory, skipping

想实现该需求,就需要归档。

归档的作用是可以将多个文件/目录合并为一个档案文件(archive),即类似于Windows上的WinRAR的打包操作。

归档工具有两种,cpio和tar,前者是比较古老的命令,已逐渐被后者所取代,因此本文简述一下后者的使用即可。

创建档案

档案文件名:*.tar、*.tar.gz、*.tar.bz2、*.tar.xz

# tar -c[zjJ]f ARCH_FILE FILE...

-c:表示创建档案。

-f:指定档案文件名(ARCH_FILE),后面必须跟上档案文件名,否则报错。例如“-fc”会报错。

FILE:待归档文件/目录。

在归档的时候,可以指定压缩。tar的压缩本质上是调用了上文所说到的压缩工具,而不是它本身就具备了压缩的能力。

-z:使用gzip压缩。

-j:使用bzip2压缩。

-J:使用xz压缩。

[root@C7 tmp]# tar -czf test.tar.gz functions init.d/ lvm_mount_point.xfsdump messages [root@C7 tmp]# file test.tar.gz test.tar.gz: gzip compressed data, from Unix, last modified: Tue Apr 23 17:48:25 2019

归档操作不会删除源文件。因此归档压缩后,源文件“functions init.d/ lvm_mount_point.xfsdump messages”还存在。

展开档案

# tar -xf ARCH_FILE [-C EXTRACT_DIR]

tar展开归档,会自动覆盖已有文件。不需要指定原压缩格式,tar会自动识别。

[root@C7 tmp]# rm -rf functions lvm_mount_point.xfsdump messages init.d/[root@C7 tmp]# tar -xf test.tar.gz[root@C7 tmp]# ls -ld functions lvm_mount_point.xfsdump messages init.d/-rw-r--r-- 1 root root  18104 Jan  3  2018 functionsdrwxr-xr-x 2 root root     70 Apr 23 17:31 init.d/-rw-r--r-- 1 root root  22384 Apr 17 14:20 lvm_mount_point.xfsdump-rw------- 1 root root 327049 Apr 23 16:20 messages

-C EXTRACT_DIR:用于指定归档展开的路径,默认不指定的话,是在当前目录下。

[root@C7 tmp]# mkdir new_dir[root@C7 tmp]# tar -xf test.tar.gz -C new_dir/[root@C7 tmp]# ls -l new_dir/total 364-rw-r--r-- 1 root root  18104 Jan  3  2018 functionsdrwxr-xr-x 2 root root     70 Apr 23 17:31 init.d-rw-r--r-- 1 root root  22384 Apr 17 14:20 lvm_mount_point.xfsdump-rw------- 1 root root 327049 Apr 23 16:20 messages

查看档案

# tar -tf ARCH_FILE
[root@C7 tmp]# tar -tf test.tar.gz functionsinit.d/init.d/READMEinit.d/functionsinit.d/netconsoleinit.d/networklvm_mount_point.xfsdumpmessages

 

转载于:https://www.cnblogs.com/alongdidi/p/compress_and_archive.html

你可能感兴趣的文章
淘宝 NPM 镜像使用
查看>>
Netty in Action笔记(Chapter 4)Transport
查看>>
emacs使用elpa升级插件
查看>>
(转载)Mac下使用Web服务器性能/压力测试工具webbench、ab、siege
查看>>
学生管理系统实例
查看>>
「造个轮子」——cicada(轻量级 WEB 框架)
查看>>
2-AIV--使用ContentProvider查询联系人
查看>>
1137. Final Grading (25)
查看>>
算法与数据结构(十) 总结
查看>>
这部在豆瓣和IMDb都曾得到高分的电影,让我震撼......
查看>>
Json解析框架之Gson详解
查看>>
支持生产阻塞的线程池
查看>>
[Hadoop]Reducer总是能复用为Combiner?
查看>>
自动化与机器人
查看>>
ESP8266 OTA之浏览器更新
查看>>
专访光鉴科技CEO朱力:打破苹果垄断,自研芯片打造低成本3D视觉解决方案
查看>>
docker的下载
查看>>
redis几种数据导出导入方式
查看>>
中间件万里行?不远万里来相会?| 阿里中间件Aliware 开启全国赋能之旅
查看>>
对抗思想与强化学习的碰撞-SeqGAN模型原理和代码解析
查看>>