前言
果然都是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 🙂
【本文由 @程序员小助手 发布,持续分享编程的故事,欢迎关注】
求推荐干净好用的解压缩软件?
很多年不怎么用电脑,下载的解压缩软件都是强迫绑定各种“全家桶”,真是流氓!
有什么办法可以安装干净好用的解压缩软件呢!
烦请各位达人推荐一下!
7z。7z具有轻便(仅有1M多)、压缩速度很快、压缩率高,最重要的是完全免费而且没有广告。
文件压缩软件哪个好用?
- Bandizip 6.25 关闭更新后无广告,可以解压所有的压缩格式。可以生成zip、7z、iso、exe等压缩包。可以设置压缩包密码(包括汉字密码)。支持创建 ZIP/7Z 格式的多卷压缩包,软件界面支持多种语音等。不要用6.25之后的新版本,会有广告。
主要功能:
支持的操作系统: Windows Vista/7/8/8.1/10 (32bit/64bit/ARM64)
集压缩/解压/浏览/编辑为一体的压缩包管理器
可以提取包括 RAR/ISO/7Z/ZIP等 30 多种格式文件
可以创建拥有密码和压缩分卷的压缩包
支持多个的处理器核心进行高速的解压缩操作
付费版还具有以下功能:
使用暴力破解的办法,完成对压缩包密码的恢复
在不解压的情况下查看压缩包中图片的缩略图
压缩包内恶意软件扫描
分析损坏的 ZIP 压缩包并尽可能修复损坏的压缩包
密码管理器
- 7-zip 软件小,界面简洁,安装包只有1M。
许可协议:7-Zip 是一款 开源 软件。大多数源代码都基于 GNU LGPL 许可协议下发布。AES 代码基于 BSD 许可下发布。unRAR 代码基于两种许可:GNU LGPL 和 unRAR 限制许可。您可以在任何一台计算机上使用 7-Zip ,包括用在商业用途的计算机,不对 7-Zip 进行捐赠或支付并不影响您的使用。
7-Zip 主要特征:使用了 LZMA 与 LZMA2 算法的 7z 格式 拥有极高的压缩比
支持格式:
压缩 / 解压缩:7z, XZ, BZIP2, GZIP, TAR, ZIP and WIM
仅解压缩:ARJ, CAB, CHM, CPIO, CramFS, DEB, DMG, FAT, HFS, ISO, LZH, LZMA, MBR, MSI, NSIS, NTFS, RAR, RPM, SquashFS, UDF, VHD, WIM, XAR, Z
对于 ZIP 及 GZIP 格式,7-Zip 能提供比使用 PKZip 及 WinZip 高 2-10% 的压缩比
为 7z 与 ZIP 提供更完善的 AES-256 加密算法
7z 格式支持创建自释放压缩包
Windows 资源管理器集成
强大的的文件管理器
更给力的命令行版本
支持 FAR Manager 插件
支持 87 种语言
7-Zip 适用于 Windows 10 / 8 / 7 / Vista / XP 等。
Mac版的免费解压工具,大家能否推荐一个呢?
The Unarchiver
The Unarchiver行为与系统自带的工具一致,文件类型图标精致有爱,操作简单易用, 可以帮助你存储不同类型的档案文件! 可以打开一些常见格式的文件,比如Zip、Rar... 也可以打开一些较老格式的文件,比如ARJ、ARC... 你使用它打开文件时它会自动检测和修正文件编码, 使你在任何地方都不会得到乱码的文章。免费!
Archiver
Archiver是一个非常多才多艺的解压缩工具,它可以解压你所有的档案。如你有一个文件太大,无法放在磁盘上或通过电子邮件发送?借助Archiver,您可以将文件分割成任意大小的较小文件。可以压缩拆分文件来挤出一些额外的空间。当然,Archiver也可以通过加密档案保护您的文件,同时,你也可以将文件们拖到Archiver中来,提取多个档案同时解压。
BetterZip
BetterZip是一款功能强大的压缩工具,它可以不解压就能预览文件,支持ZIP,TAR,TGZ,TBZ,TXZ等多种格式的文件。此外,它还能让文件在Windows 和Linux系统中兼容。
Dr. Unarchiver
在正版的Mac解压缩软件中,免费又好用的解压软件确实是非常少见的,它像解压缩界一股清流。Dr.Unarchiver支持所有常见格式:如RAR、7z、ZIP、XZ、BZIP2、GZIP、RAR、WIM、ARJ、CAB、CHM、CPIO、CramFS、DEB、DMG、FAT、HFS、ISO、LZH、LZMA、MBR、MSI、NSIS、NTFS、RPM、SquashFS、UDF、VHD、WIM、XAR 以及 Z等。
Rar Sharp
Rar Sharp for mac是一款Mac上的压缩解压缩工具,支持常用的压缩格式,如rar, zip, gzip, tar等格式,支持压缩包内文件预览、解压缩部分内容、密码加密、拖拽压缩解压等功能。