前言
果然都是windows重度用户,本文带你用Linux的角度看“压缩”!
划重点
相对于windows下的鼠标点点拖拖,linux在终端,大概率是用不着界面操作文件和文件夹的。
Linux是开放源代码的,由数量庞大的GNU软件搭建而成。本文的压缩软件,无毒是肯定的(因为犯不着,留后门,是不想在开源界混了吗?)。
打包
压缩,解压缩软件千千万,打包解包的指令只一个——tar。
好用指出,我想都不用多说了吧。
使用man tar查看该手册,重点的功能描述,和示例都圈出来了。
因为一般的压缩软件,仅能对单个文件进行压缩,如果对于目录,是无法操作的。所以这时候需要“打包”,把一堆杂七杂八的文件,甭管什么往一个包里一装。这就是一个整体,然后调用压缩指令,就可以了。这也是linux系统实践中最常用的方法。
英文的不直观,下面是中文的参数注释。
压缩软件
终于说到压缩软件了。Linux下还有不少选择,常见一些压缩文件的扩展名会有
*.tar, *.tar.gz, *.tgz, *.gz, *.Z, *.bz2, *.xz
我们知道,linux的文档扩展名是没有用的,这样写只是用于标识,该文档是基于那个软件产生的。
Linux下用的最多的,当属 gzip,bzip2,和xz。由于使用习惯,我们重点介绍一下gzip这款压缩软件。
gzip是GNU软件,业已取代了较为古旧的compress指令。完全支持windows下使用较高的zip文件的压缩解压。
后来GNU又开发出了bzip2和xz,这些压缩效果比较好,效率比较高的软件。但是这3款软件,通畅仅能针对一个文件进行压缩和解压缩。这样的话,如果操作为数众多的文件,岂不崩溃!
所以,就体现出上一节所说tar打包指令的重要性。
这些工具联合起来,威力无比!
言归正传。下面是gzip的常用参数和使用方式。
gzip [-cdtv#] 文件名
其中,
-c 将压缩数据输出到终端stdout
-d 解压缩
-t 用来减压一个压缩文件的一致性,检查文件是否有误
-v 可视化显示原文件,压缩文件压缩比等信息
下面通过例子来说明其用法。我们使用图片展示这个过程。
前提是我们创建了一个目录
mkdir -pv /tmp/gzip_demo
然后创建一个随机文件,并填充一些内容
openssl rand -base64 1024984 > log
生成的单文件log使用gzip进行压缩
gzip -v log
可以看到,压缩比率和目标文件名。log文件被替换。这是gzip的工作原理。
在默认情况下,原本的文件会被压缩为 gz 为后缀的文档,源文件不复存在。这与windows下的winrar,7zip等软件完全不同,一定要注意,注意,注意!
组装起来,更强大!
Linux下的指令,通过管道符的助力,可以让你的代码随着思绪飞舞,一行解决战斗,瞬间搞定!
下面结合打包指令tar,进行一些更为复杂的压缩操作。
示例1:打包某几个目录,但是排除一些特定目录
例如,打包 /etc和/root目录,但是 /root/etc* 开头的文件,不需要打包和压缩。将新生成的压缩包放置在 /root/system.tar.gz 内。
指令需要像下面这样写:
tar -zcv -f /root/system.tar.bz2 --exclude=/root/etc* --exclude=/root/system.tar.gz /etc /root
逐一说明参数的用法:
-z 使用 gzip 压缩
-c 创建文档
-v 展示详细信息
--exclude 指定不包含规则
因为目标文档也在压缩文档内,所以一定要追加到 --exclude 选项内。否则死循环。
示例2:仅备份/etc目录下修改日期在2019-10-01之后的文件
直接上指令:
tar -zcv -f /root/etc.newer.tar.gz --newer-mtime="2019/10/01" /etc/*
主要使用了 --newer-mtime 选项。别的都与上一条一致。
结语
好了,简短写到这儿吧。Linux下工具很多,效率很高,持续多年生产环境打磨,性能稳定的一匹。你值得信赖。
windows下,动不动就要授权,动不动就要弹广告的压缩软件,真的不堪回首。
也许只有Linux才能给你清洁无毒,白莲花般的压缩体验!
Happy coding :-)
【本文由 @程序员小助手 发布,持续分享编程的故事,欢迎关注】
标签: 软件 linux压缩文件夹 gzip 解压软件 root
还木有评论哦,快来抢沙发吧~