Linux下常用压缩 解压命令和压缩比率对比 | 您所在的位置:网站首页 › 压缩文件一般可以压缩多少 › Linux下常用压缩 解压命令和压缩比率对比 |
常用的格式有: tar, tar.gz(tgz), tar.bz2, 不同方式,压缩和解压方式所耗CPU时间和压缩比率也差异也比较大。 1. tar 只是打包动作,相当于归档处理,不做压缩;解压也一样,只是把归档文件释放出来。(1)打包归档格式: tar -cvf examples.tar files|dir #说明: -c, --create create a new archive 创建一个归档文件 -v, --verbose verbosely list files processed 显示创建归档文件的进程 -f, --file=ARCHIVE use archive file or device ARCHIVE 后面要立刻接被处理的档案名,比如--file=examples.tar #举例: tar -cvf file.tar file1 #file1文件 tar -cvf file.tar file1 file2 #file1,file2文件 tar -cvf file.tar dir #dir目录(2)释放解压格式: tar -xvf examples.tar (解压至当前目录下) tar -xvf examples.tar -C /path (/path 解压至其它路径) #说明: -x, --extract, extract files from an archive 从一个归档文件中提取文件 #举例: tar -xvf file.tar tar -xvf file.tar -C /temp #解压到temp目录下 2. tar.gz tgz (tar.gz和tgz只是两种不同的书写方式,后者是一种简化书写,等同处理) 这种格式是Linux下使用非常普遍的一种压缩方式, 兼顾了压缩时间(耗费CPU)和压缩空间(压缩比率) 其实这是对tar包进行gzip算法的压缩(1)打包压缩格式: tar -zcvf examples.tgz examples (examples当前执行路径下的目录) 说明: -z, --gzip filter the archive through gzip 通过gzip压缩的形式对文件进行归档 举例: tar -zcvf file.tgz dir #dir目录(2)释放解压格式: tar -zxvf examples.tar (解压至当前执行目录下) tar -zxvf examples.tar -C /path (/path 解压至其它路径) 举例: tar -zcvf file.tgz tar -zcvf file.tgz -C /temp 3 tar.bzLinux下压缩比率较tgz大,即压缩后占用更小的空间,使得压缩包看起来更小。 但同时在压缩,解压的过程却是非常耗费CPU时间。 (1)打包压缩格式: tar -jcvf examples.tar.bz2 examples (examples为当前执行路径下的目录) 说明: -j, --bzip2 filter the archive through bzip2 通过bzip2压缩的形式对文件进行归档 举例: tar -jcvf file.tar.bz2 dir #dir目录(2)释放解压: tar -jxvf examples.tar.bz2 (解压至当前执行目录下) tar -jxvf examples.tar.bz2 -C /path (/path 解压至其它路径) 举例: tar -jxvf file.tar.bz2 tar -jxvf file.tar.bz2 -C /temp 4 gz 压缩: gzip -d examples.gz examples解压: gunzip examples.gz 5 zip zip 格式是开放且免费的,所以广泛使用在 Windows、Linux、MacOS 平台,要说 zip 有什么缺点的话,就是它的压缩率并不是很高,不如 rar及 tar.gz 等格式。 压缩: zip -r examples.zip examples (examples为目录)解压: zip examples.zip 6 .rar 压缩: rar -a examples.rar examples解压: rar -x examples.rar 压缩比率,占用时间对比 为了保证能够让压缩比率较为明显,需选取一个内容较多、占用空间较大的目录作为本次实验的测试。 找了一个大概有23G的目录来测试,首先要明确由于执行环境的变化,误差在所难免 首先明确一个概念: 压缩比率=原内容大小/压缩后大小,压缩比率越大,则表明压缩后占用空间的压缩包越小 .tar 打包: time tar -cvf test.tar /usr/test 时间: real 3m20.709s user 0m3.477s sys 0m42.595s 大小: 打包前:23214680 打包后:22202984 耗时:3m20.709s 压缩比率:22202984/23214680 解压: time tar -xvf test.tar 大小: 解压前:22202984 解压后:23211064 耗时: real 2m47.548s user 0m4.999s sys 1m14.186s.tgz 打包压缩: time tar -zcvf test.tgz /usr/test 时间: real 16m30.767s user 16m1.394s sys 1m7.391s 大小: 打包前:23211064 打包后:18949032 耗时: 压缩比率: 解压: tar -zxvf test.tar 大小: 解压前:18949032 解压后:23211064 耗时: real 3m52.418s user 2m46.325s sys 1m21.442s.tar.bz2 打包压缩: time tar -jcvf test.tar.bz2 /usr/test 时间: real 80m39.422s user 80m14.599s sys 0m58.623s 大小: 打包前:23211064 打包后:18728904 耗时:80m39.422s 压缩比率: 解压: time tar -jxvf test.tar.bz2 时间: real 27m54.525s user 27m44.108s sys 1m43.645s 大小: 解压前:18728904 解压后:23211064
综上结果,初步结论: 综合起来,在压缩比率上: tar.bz2>tgz>tar 占用空间与压缩比率成反比: tar.bz2tar 解压: tar.bz2>tar>tgz 从效率角度来说,当然是耗费时间越短越好 因此,Linux下对于占用空间与耗费时间的折衷多选用tgz格式,不仅压缩率较高,而且打包、解压的时间都较为快速,是较为理想的选择。 另外,还有一款xz工具,压缩比: xz >biz2 > gzip。压缩时间长的问题可以扩大内存限制、增加线程数。 官网介绍到: 压缩后的文件大小 gzip 小30%,比bzip2小15%。 我测试 一个 112M 的文件,xz 压缩完后 4.5M, gz 压缩完后 16M, biz2 缩完后7.6M. 使用方式: xz 进行压缩的时候,默认使用的内存为 总内存的 5% 左右。 压缩文件(源文件不保留) xz /home/nginx/logs/error.log-20191126 压缩文件(源文件保留) xz -k /home/nginx/logs/error.log-20191126压缩的时候设定最大使用内存 --memlimit-compress= 示例:--mem‐ limit-compress=80MiB 解压缩文件 xz -d /home/nginx/logs/error.log-20191126.xz或者 unxz /home/nginx/logs/error.log-20191126.xz解压缩的时候设定最大使用内存 --memlimit-decompress= 指定多线程数来进行压缩 xz -T 4 /home/nginx/logs/error.log-20191126具体使用参考文后附录。 结论: 再一次印证了物理空间与时间的矛盾(想占用更小的空间,得到高压缩比率,肯定要牺牲较长的时间;反之,如果时间较为宝贵,要求快速,那么所得的压缩比率一定较小,当然会占用更大的空间了)。
附:xz使用 一、XZ 基础信息二、安装三、详解 3.1、常用的参数3.2、 常用命令四、扩展 4.1、unxz4.2、xzcat4.3、lzma4.4、unlzma4.5、lzcat 一、XZ 基础信息 米妮文学网 m.amini.net XZ 压缩比比较高,在这里没有进行详细对比。 官网链接: https://tukaani.org/xz/ 官网介绍到: 压缩后的文件大小 gzip 小30%,比bzip2小15%。 我测试 一个 112M 的文件,xz 压缩完后 4.5M, gz 压缩完后 16M, biz2 缩完后7.6M. 压缩比: xz >biz2 > gzip 二、安装yum install epel-release yum install xz 三、详解 3.1、常用的参数默认压缩后的文件后缀为 xz -z 强制执行压缩, 默认不保留源文件。压缩后的文件名为源文件.xz -d 强制执行解压缩 -l 列出压缩文件的信息 -k 保留源文件不要删除 -f 强制覆盖输出文件和压缩链接 -c 写入到标准输出,输入文件不要删除 -0..-9 压缩比例,默认为6 -e 使用更多的 CPU time 来进行压缩,提高压缩率。不会影响解压时所需要的内存。 -T 指定线程数,默认是 1 ,当设置为 0 时使用和机器核心一样多的线程。 --format= 指定压缩输出格式,可以是 raw、xz、lzma -v 显示更详细的信息 注意点: 压缩后的文件时在和源文件同一个目录。当我们压缩的文件为 /home/nginx/logs/error.log-20191126 ,当我们在任意目录执行完 xz /home/nginx/logs/error.log-20191126 后,压缩后的文件路径是 /home/nginx/logs/error.log-20191126.xz. 3.2、 常用命令xz 进行压缩的时候,默认使用的内存为 总内存的 5% 左右。 压缩文件(源文件不保留) xz /home/nginx/logs/error.log-20191126 压缩文件(源文件保留) xz -k /home/nginx/logs/error.log-20191126压缩的时候设定最大使用内存 --memlimit-compress= 示例:--mem‐ limit-compress=80MiB 解压缩文件 xz -d /home/nginx/logs/error.log-20191126.xz或者 unxz /home/nginx/logs/error.log-20191126.xz解压缩的时候设定最大使用内存 --memlimit-decompress= 指定多线程数来进行压缩 xz -T 4 /home/nginx/logs/error.log-20191126 四、扩展 4.1、unxzxz 压缩包的解压命令 4.2、xzcatxz --decompress --stdout 查看压缩文件的内容 4.3、lzmaxz --format=lzma 压缩格式为 lzma 4.4、unlzmaxz --format=lzma --decompress 解压 压缩格式为 lzma 的压缩包 4.5、lzcatxz --format=lzma --decompress --stdout |
CopyRight 2018-2019 实验室设备网 版权所有 |