• Linux 常用压缩格式


    Linux 常用压缩格式简介

    Linux系统用户可以根据自己的需求选择合适的压缩工具来进行文件压缩和解压操作。Linux系统中常用的压缩软件都有相应的命令行工具,并且可以通过软件包管理器进行安装。主要有gzip、bzip2、zip、tar、7z。
    gzip:gzip是一个广泛使用的开源压缩工具,它通常用于将单个文件进行压缩,生成以".gz"为后缀的压缩文件。gzip的压缩率较高,但无法压缩目录。
    bzip2:与gzip类似,bzip2也是一种常见的压缩工具,它能够提供更高的压缩比和更长的压缩时间。bzip2生成的压缩文件通常以".bz2"为后缀。
    zip:zip是一个常用的跨平台压缩工具,它可以对文件和目录进行压缩,并支持密码保护和分卷压缩。在Linux系统中,通常需要额外安装zip软件包。
    tar:tar并不是一个压缩工具,而是一个归档工具,用于将多个文件或目录打包成一个文件。通常会搭配其他压缩工具(如gzip或bzip2)来对打包后的文件进行压缩,生成以".tar.gz"或".tar.bz2"为后缀的压缩文件。
    7z:7z是一种高效的压缩工具,能够生成以".7z"为后缀的压缩文件,支持多种压缩算法和加密方式。

    作者:炭烤毛蛋 ,点击博主了解更多。


    提示:压缩率直接压缩时间,而压缩格式决定压缩率,按照实际场景选取合适压缩格式。


    1. 常用压缩格式

    1.1 tar

    tar 是一个用于创建和提取压缩包的命令。

    1.1.1 .tar格式

    创建 tar 压缩包:

    tar -cvf archive.tar /path/to/directory
    
    • 1
    • -c:表示创建新的压缩包。
    • -v:显示归档过程中处理的文件。
    • -f:指定压缩包的名称。

    提取 tar 压缩包:

    tar -xvf archive.tar
    
    • 1
    • -x:从压缩包中提取文件。
    • -v:显示提取过程中处理的文件。
    • -f:指定压缩包的名称。

    1.1.2 .tar.bz2 格式

    压缩成.tar.bz2格式:

    tar -cvjf archive.tar.bz2 /path/to/directory_or_file
    
    • 1

    -c:创建新的压缩文件
    -v:显示详细输出
    -j:使用bzip2算法进行压缩
    -f:指定压缩文件的名称

    从.tar.bz2文件中提取:

    tar -xvjf file.tar.bz2 -C /path/to/destination
    
    • 1

    -x:解压文件
    -v:显示详细输出
    -j:使用bzip2算法解压缩
    -f:指定要解压的文件

    1.1.3 .tar.gz 格式

    压缩并创建 tar.gz 文件:

    tar -czvf archive.tar.gz /path/to/directory
    
    • 1
    • -z:使用 gzip 压缩/解压文件。
    • 其他参数与上述相同。

    提取 tar.gz 文件:

    tar -xzvf archive.tar.gz
    
    • 1
    • -z:使用 gzip 解压文件。
    • 其他参数与上述相同。

    提示:想要将文件提取到指定目录,可以使用-C选项:

    tar -xvjf archive.tar.bz2 -C /path/to/destination
    
    • 1

    1.2 gzip

    gzip 是一种常用的文件压缩工具,它通常与 tar 命令结合使用。

    压缩文件:

    gzip filename
    
    • 1

    解压缩文件:

    gzip -d filename.gz
    
    • 1

    1.3 bzip2

    bzip2 是一种高效的文件压缩工具,压缩后的文件通常比 gzip 更小。

    压缩文件:

    bzip2 filename
    
    • 1

    解压缩文件:

    bzip2 -d filename.bz2
    
    • 1

    1.4 zip

    zip 是一种常见的跨平台压缩和归档格式,可以在 Windows、Linux 和 macOS 中使用。

    创建 zip 文件:

    zip archive.zip file1 file2 file3
    
    • 1

    file1、file2和file3压缩成一个名为archive.zip的压缩文件。

    zip -r archive.zip directory
    
    • 1

    这将会将整个directory目录以及其中的所有文件和子目录压缩成一个名为archive.zip的压缩文件。

    解压 zip 文件:

    unzip archive.zip
    
    • 1

    提取压缩文件

    unzip archive.zip
    
    • 1

    这将会解压缩名为archive.zip的文件,并还原成原始的未压缩文件或目录。

    你也可以使用-d选项来将文件提取到指定目录:

    unzip archive.zip -d /path/to/destination
    
    • 1

    这将会把压缩文件中的内容提取到/path/to/destination目录。

    1.5 rar

    rar 是一种常用的压缩和归档格式,常用于 Windows 系统。

    创建 rar 文件:

    rar a archive.rar file1 file2 file3
    
    • 1

    这条命令将会把file1、file2和file3压缩成一个名为archive.rar的压缩文件。

    想要设置压缩级别,最高压缩级别(5),可以使用-m选项:

    rar a -m5 archive.rar file1 file2 file3
    
    • 1

    解压 rar 文件:

    unrar x archive.rar
    
    • 1

    -e选项来将文件提取到指定目录:

    rar e archive.rar /path/to/destination
    
    • 1

    将会把压缩文件中的内容提取到/path/to/destination目录。

    1.6 7z

    7z 是一种高压缩比的文件压缩工具,支持多种压缩和归档格式。在Linux系统中,你可以使用7z命令来进行文件的压缩和提取操作。

    压缩文件

    7z a archive.7z file1 file2 file3
    
    • 1

    这条命令将会把file1、file2和file3压缩成一个名为archive.7z的压缩文件。

    如果你想要设置压缩级别,可以使用-mx选项:

    7z a -mx=9 archive.7z file1 file2 file3
    
    • 1

    这将会以最高压缩级别(9)来压缩文件。

    提取压缩文件

    7z x archive.7z
    
    • 1

    这会解压缩名为archive.7z的文件,并还原成原始的未压缩文件或目录。

    你也可以使用-o选项来将文件提取到指定目录:

    7z x archive.7z -o/path/to/destination
    
    • 1

    这将会把压缩文件中的内容提取到/path/to/destination目录。

    ** 7z 压缩参数 **
    -a 添加文件/文件夹到压缩包
    -t 指定压缩格式,如-t7z表示指定压缩格式为7z
    -o 是指定解压到的目录
    -r 递归所有的子文件夹,这个选项通常可以忽略
    -x 解压文件
    通过这些命令,你可以在Linux系统中使用7z来进行文件的压缩和提取操作。

    2. 压缩格式对比

    压缩率和压缩时间是评估不同压缩算法和工具性能的重要指标。
    压缩率:压缩率指的是在压缩文件后,文件大小相对于原始文件大小的比率。更高的压缩率意味着压缩效果更好,文件变得更小,节省了存储空间。压缩率可以通过计算压缩后文件大小与原始文件大小的比值来得到,常用百分比表示。
    压缩时间:压缩时间指的是执行压缩操作所花费的时间。较短的压缩时间意味着压缩速度更快,适用于需要频繁进行大量文件压缩的场景。然而,有些情况下压缩时间并不是主要关注点,比如在后台进行压缩操作时,压缩时间可以放宽。

    2.1 压缩耗时

    各种压缩格式,压缩耗时。

    ~$ time tar cf test.tar test
    
    real    0m0.289s
    user    0m0.010s
    sys     0m0.278s
    ~$ time tar cjf test.tar.bz2 test
    
    real    0m56.559s
    user    0m55.241s
    sys     0m3.380s
    ~$ time tar czf test.tar.gz test/
    
    real    0m18.175s
    user    0m17.855s
    sys     0m1.589s
    ~$ time zip -r test.zip test
    
    real    0m11.198s
    user    0m10.851s
    sys     0m0.270s
    
    ~$ time rar a test.rar test
    real    0m19.324s
    user    1m10.378s
    sys     0m26.131s
    
    ~$ time 7z a test.7z test
    real    0m11.704s
    user    1m30.378s
    sys     0m2.963s
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    压缩耗时:.tar.bz2 > .rar > .tar.gz > .7z > .zip > .tar。

    2.2 压缩耗时对比

    查看原始文件或目录大小

    ~$ du -h --max-depth=0 test
    402M    test
    
    • 1
    • 2

    查看压缩后文件大小

    ~$ ls test.* -lh
    -rw-r--r-- 1 ice ice 188M Nov 19 14:46 test.7z
    -rw-r--r-- 1 ice ice 199M Nov 19 14:45 test.rar
    -rw-r--r-- 1 ice ice 388M Nov 19 14:29 test.tar
    -rw-r--r-- 1 ice ice 198M Nov 19 14:31 test.tar.bz2
    -rw-r--r-- 1 ice ice 199M Nov 19 14:28 test.tar.gz
    -rw-r--r-- 1 ice ice 203M Nov 19 14:44 test.zip
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    压缩率:.7z > .tar.bz2 > .rar > tar.gz > zip > tar。

    汇总以上测试结果到如下表中:

    压缩格式压缩耗时压缩后大小压缩率百分比
    .tar0.289s388M96.5
    .tar.bz256.559s198M49.3
    .tar.tgz18.175s199M49.5
    .zip11.198s203M40.5
    .rar19.324s199M49.5
    .7z11.704s188M46.8

    在实际应用中,选择合适的压缩算法和工具需要综合考虑压缩率和压缩时间。某些情况下,需要更高的压缩率来节省存储空间,而在另一些情况下,更看重压缩时间以提升效率。根据具体需求,可以权衡两者之间的关系,选择最适合的压缩算法和工具。

    结语

    不枉博主详细讲解,欢迎订阅博主–炭烤毛蛋

  • 相关阅读:
    温控仪的工作原理
    ApiPost接口测试工具
    Python浪漫星空
    怎么申报高新?流程是什么??
    【Python&GIS】基于Python批量合并矢量数据
    jQuery 事件
    『docker笔记』Centos7离线安装docker[补充CentOS开机自动启动脚本]
    CMake 坑之添加文件后不修改CMakeList.txt,则文件加不进来
    apache解决请求无法识别Authorization
    如何设置代理ip服务器地址
  • 原文地址:https://blog.csdn.net/weixin_35723192/article/details/134479990