Linux 命令---打包压缩

最后更新:
阅读次数:
  • 区分两个概念

    • 打包:将一大堆文件或目录打包成一个档案文件
    • 压缩:将一个大的文件通过一些压缩算法压缩成一个较小的文件

打包

tar

  • tar

tar 用来创建、管理档案文件。虽然为 tar 命令特定的参数(-z)可以压缩文件,但是其本质上是 tar 命令自动调用相关的压缩命令(gzip)对打包后的文件进行了压缩,而 tar 命令本身并不具有压缩功能。

# 必要参数解释
# -c 建立新的档案文件
# -r 向存档文件中添加新的文件
# -x 从档案文件中提取文件
# -t 列出档案文件的内容
# -v 显示指令的执行过程
# -f 指定用于操作(新建、插入、提取)的档案文件

# 打包
$ tar -cvf package.tar 1.txt 1.png ./folder

# 解包
$ tar -xvf package.tar

# -z 启用 gzip 模式(利用 gzip 压缩或解压)
# 压缩文件(先打包,再压缩)
$ tar -czvf pack.tar.gz *.c

# 查看压缩文件内容
$ tar -tzvf pack.tar.gz

# 解压文件
$ tar -xzvf pack.tar.gz

压缩

gzip

gzip 是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出 “.gz” 的扩展名。gzip 不具备打包功能,所以没法直接通过 gzip 命令一次压缩多个文件为一个文件。

  • gzip
# 压缩文件
$ gzip file.txt # => file.txt.gz

# -d 解压文件
$ gzip -d file.txt.gz # => file.txt

# -c 指定压缩或解压的输出到指定文件或目录,而不去更改源文件(默认会将源文件删除)
$ gzip -c file.txt > file.gz
$ gzip -cd file.gz > folder

# -l 列出压缩文件的相关信息(比如压缩比率)
$ gzip -l file.txt.gz

# -<num> num 的范围是 1-9,默认为 6
# 1 表示压缩速度最快(低压缩比率)
# 9 表示压缩速度最慢(高压缩比率)
$ gzip -9 file.txt

# -r 递归压缩或解压目录下的每个文件(一般不这么玩,一般都是把目录打包再进行压缩)
$ gzip -r ./folder
$ gzip -dr ./folder

# -v 显示指令的执行过程

zip

zip 也是个使用广泛的压缩程序,文件经它压缩后会另外产生具有”.zip”扩展名的压缩文件。与 gzip 不同,zip 具备打包功能,可以直接通过 zip 命令一次压缩多个文件为一个文件。

  • zip
# -r 递归地打包压缩一个目录及目录的所有内容
$ zip -r pack.zip ./folder

# 打包压缩多个目录
$ zip -r pack.zip ./folder ./folder2

# 为压缩文件添加内容
$ zip pack.zip *.js

# -d 删除压缩文件内的指定内容
$ zip -d pack.zip ./folder/js/*

# -m 压缩指定文件后,删除源文件(默认不会删除)
$ zip -r -m 1.zip *.c

# -x 指定压缩时被忽略的文件或目录
$ zip -r pack.zip ./folder -x ./folder/*.c
$ zip -r pack.zip ./folder -x ./folder/js/ # 只会忽略目录自身,但不会忽略目录的内容

# -<num> num 的范围是 1-9,默认为 6
# 1 表示压缩速度最快(低压缩比率)
# 9 表示压缩速度最慢(高压缩比率)
$ gzip -9 file.txt

# -v 显示指令的执行过程
  • unzip
# 解压 zip 压缩文件
$ unzip pack.zip # 默认解压到当前文件夹

# -d 解压到指定目录
$ unzip pack.zip -d ./folder

# -l 显示压缩文件内所包含的文件
$ unzip -l pack.zip
  • zipinfo
# 显示 zip 压缩文件的详细信息
$ zipinfo pack.zip

# -v 显示超级详细的压缩文件的信息
$ zipinfo -v pack.zip