压缩打包程序

使用zip打包文件夹

  • 使用zip命令可以将文件夹打包,比如使用下面的命令将目录/home/shiyanlou/Desktop打包成一个文件,并查看打包后文件的大小和类型,其中-r参数表示递归打包包含子目录的全部内容,-q参数表示为安静模式,即不输出信息到屏幕,-o表示输出文件,在后面紧跟上输出的文件名称:

    1
    2
    3
    4
    cd ~
    zip -r -q -o shiyanlou.zip /home/shiyanlou/Desktop
    du -h shiyanlou.zip
    file shiyanlou.zip

    image-20231013221318522

  • 为打包设置压缩级别(9:最高压缩度,速度最慢;1:最快速度,压缩率低),进行重新打包:

    1
    2
    zip -r -9 -q -o shiyanlou_9.zip /home/shiyanlou/Desktop -x ~/*.zip
    zip -r -1 -q -o shiyanlou_1.zip /home/shiyanlou/Desktop -x ~/*.zip

    image-20231013221533479

  • 使用du命令再次查看压缩得到的文件,其中-h为以人可读的形式展现,-d表示查看文件的深度:

    1
    du -h -d 0 *.zip ~ | sort

    image-20231013221602101

  • 注意:压缩文件使用的路径只能使用绝对路径,否则不起作用。理论上默认压缩级别是最高的,但在文件较小时难以看出差别。

  • 由于WIndows和Linux/Unix在文本处理格式上存在差异,比如换行符,WIndows上为CR+LF,但Linux/Unix上为LF,所以一些在Linux/Unix上的换行在Windows系统上看起来像是没有换行,为了解决此类问题,还需要在命令中做出一些修改,加上-l参数将LF转换为CR+LF达到上述目的:

    1
    zip -r -l -o shiyanlou.zip /home/shiyanlou/Desktop

    image-20231013221943861

创建加密zip包

  • 在打包文件时添加上-e参数可以创建加密压缩包:

    1
    zip -r -e -o shiyanlou_encryption.zip /home/shiyanlou/Desktop

    image-20231013222055429

解压缩打包程序

解压缩文件

  • 将之前打包的shiyanlou.zip解压到当前目录下:

    1
    unzip shiyanlou.zip

    image-20231013222137966

  • 与之前相同,使用-q参数使用安静模式解压文件,而使用-d参数指定解压目录:

    1
    unzip -q shiyanlou.zip -d ziptest

    image-20231013222224693

  • 如果上面指定的目录不存在,则会直接创建。

  • 如果只想查看压缩包的内容,而不进行解压操作,可以使用-l参数:

    1
    unzip -l shiyanlou.zip

    image-20231013222521006

解决解压乱码问题

  • 通常在Windows系统上创建的压缩文件,如果包名中含有中文的目录或者以中文作为文件名命名的文件,通常会采用GBK编码,而Linux则是默认使用哪个UTF-8编码,如果不加以处理直接解压,则会出现乱码问题,可以在解压缩时使用-O参数指定文件编码:

    1
    unzip -O GBK 压缩文件.zip

tar打包工具

打包

  • 比起zip,在Lin上更常使用的是tar工具,tar可以将7z、gzip、xz、bzip2等格式进行打包或者解包,仅仅是参数不同,比起zip使用较为方便。

  • 创建一个tar包,使用-P参数保留绝对路径符,-c表示创建一个tar包文件,-f用于指定创建的文件名,其后紧跟文件名称,如果加上-v参数,那么会以可视的形式输出打包的文件:

    1
    2
    cd ~
    tar -P -cf shiyanlou.tar /home/shiyanlou/Desktop

    image-20231013222601275

    在使用多个参数时,可以使用连续书写方式:如同时使用-c-f参数 ,则可以写成-cf

解包

  • 同样是使用tar命令,加上-x参数则是对文件进行解包,-C参数指定解压到的目标文件夹:

    1
    2
    mkdir tardir
    tar -xf shiyanlou.tar -C tardir

    image-20231013222938219

  • 只查看而不解压文件使用-t参数:

    1
    tar -tf shiyanlou.tar

    image-20231013223001893

  • 如果需要在解压时保留文件的属性和跟随链接(符号链接或软连接)可以使用-p参数和-h参数:

    1
    tar -cphf etc.tar /etc

创建其他形式的打包程序

压缩文件格式 参数
*.tar.gz -z
*.tar.xz -J
*tar.bz2 -j
  • 比如创建.tar.gz文件,加上-z参数:

    1
    tar -czf shiyanlou.tar.gz /home/shiyanlou/Desktop

    image-20231013223140457

  • 解压.tar.gz文件:

    1
    tar -xzf shiyanlou.tar.gz

实战训练

创建一个名为 test 的文件,分别用 zip 和 tar 打包成压缩包,再解压到 /home/shiyanlou 目录。

  • 创建一个名为 test 的文件:

    1
    2
    cd ~
    touch test

    image-20231013223345818

  • 分别用 zip 和 tar 打包成压缩包:

    1
    2
    3
    zip -q -o test.zip test
    tar -P -cf test.tar test
    ls

    image-20231013230521245

  • 再解压到 /home/shiyanlou 目录:

    1
    2
    3
    cd ~
    unzip test.zip
    tar -xf test.tar

    image-20231013230641542