归档工具笔记

简述

归档文件是由一个或多个计算机文件以及元数据组成的压缩文件。

归档的特点

  1. 数据压缩
  2. 加密
  3. 文件连接
  4. 自动提取
  5. 自动安装
  6. 源卷和媒体信息
  7. 文件跨越
  8. 校验和
  9. 目录结构信息
  10. 其他元数据(关于数据的数据)
  11. 错误发现

应用领域

  1. 将计算机文件系统与元数据一起存储。
  2. 在本地传输文件有用。
  3. 用于通过网络传输文件。
  4. 软件包装应用。

目的是使用时间换取空间。

目前来说,有很多种归档工具,下面只介绍我所见过的归档工具。

仅是略写,更多详细的使用方式请使用相应工具的帮助功能 (-h / -? / --help)

ar

简述

ar 在 Linux 命令行中可以直接调用此工具。

可以使用 binwalk 软件提取。

特征

文件开头含有 !<arch> 或者 !<thin> (这是一种简化的压缩)。

命令

命令 作用
d 从归档文件中删除文件
m[ab] 在归档文件中移动文件
p 打印在归档文件中找到的文件
q[f] 将文件快速追加到归档文件中
r[ab][f][u] 替换归档文件中已有的文件或加入新文件
s act as ranlib
t 显示归档文件的内容
x[o] 从归档文件中提取文件 (解压)

特定命令修饰符

命令修饰符 作用
[a] 将文件置于 [成员名] 之后
[b] 将文件置于 [成员名] 之前 (于 [i] 相同)
[D] use zero for timestamps and uids/gids
[U] use actual timestamps and uids/gids (default)
[N] use instance [count] of name
[f] truncate inserted file names
[P] 在匹配时使用完整的路径名
[o] 保留原来的日期
[u] 只替换比当前归档内容更新的文件

通用修饰符

通用修饰符 作用
[c] 不在必须创建库的时候给出警告
[s] 创建归档索引 (cf. ranlib)
[S] 不要创建符号表
[T] make a thin archive
[v] 输出较多信息
[V] 显示版本号

实例

  • 打包文件

    1
    ar rv output.bak a.c b.c
    1
    ar rv output.bak *.c
  • 显示打包文件内容

    1
    ar t output.bak
  • 解压文件

    1
    ar x output.bak

bzip2

简述

bzip2 是一个优秀的压缩算法,在 Linux 中经常被使用。

可以在 Linux 命令行中直接调用此工具。

可以使用 Bandizip 来解压缩。

特征

后缀是 .bz2

命令

命令 作用
-c 将压缩与解压缩的结果送到标准输出
-d 执行解压缩
-f bzip2在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件。若要覆盖。请使用此参数
-k bzip2在压缩或解压缩后,会删除原始文件。若要保留原始文件,请使用此参数
-s 降低程序执行时内存的使用量
-t 测试 .bz2 压缩文件的完整性
-v 压缩或解压缩文件时,显示详细的信息
-z 强制执行压缩
-V 显示版本信息
-# 指定压缩比;默认是6;数字越大压缩比越大(1-9)

实例

  • 压缩

    1
    bzip2 filename

    压缩会将原来的文件删除,然后输出 filename.bz2,如果需要保留原文件请使用 -k

  • 解压

    1
    bzip2 -d filename

    解压会将压缩包删除,然后如果 filename 里有后缀 .bz2,则输出无后缀的文件;如果没有后缀,则输出同名文件。如果需要保留原文件请使用 -k

cpio

简述

cpio 是用来建立,还原备份档的工具程序,它可以加入,解开 cpiotar 备份档内的文件。

特征

后缀是 .cpio

命令

命令 作用
-o 指定运行为copy-out模式,即归档模式
-i 指定运行为copy-in模式,即提取模式
-p 指定运行为copy-pass模式,即目录拷贝模式
-t 列出归档文件中的文件列表
-d 当需要的时候自动创建目录
-v 详细显示指令的执行过程

实例

  • 归档

    1
    ls | cpio -ov > obj.cpio

    将当前目录的文件归档到 obj.cpio

  • 提取

    1
    cpio -idv < obj.cpio

    提取归档文件 obj.cpio

gzip

简述

gzip 的是标准的,广泛使用的文件压缩和解压工具。 gzip 允许文件级联。

可以直接在 Linux 命令行中调用此工具。

可以使用 Bandizip 解压缩。

可以使用 binwalk 软件提取。

特征

后缀为 .gz

命令

命令 作用
-c 将输出写到标准输出上,并保留原有文件
-d 将压缩文件解压
-l 对每个压缩文件,显示下列字段:
压缩文件的大小;未压缩文件的大小;压缩比;未压缩文件的名字
-r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩
-t 测试,检查压缩文件是否完整
-v 对每一个压缩和解压的文件,显示文件名和压缩比
-# 指定压缩比(1-9),系统缺省值为 6。

实例

  • 压缩

    1
    gzip filename
  • 解压

    1
    gzip -dv filename
  • 列出压缩文件信息

    1
    gzip -l filename

lz4

简述

lz4 在压缩率上略微逊色, 但是在解压速度上有着惊人的优势。

因为压缩时高效的多核利用,再加上惊艳的解压,lz4 已经在非常多重要场合使用了

特征

后缀为 .lz4

命令

命令 作用
-d 解压缩(默认为 .lz4 扩展名)
-z 强制压缩
-f 覆盖输出而不提示
-k 保留源文件(默认)
-v 详细模式
-q 取消警告;指定两次也可以取消错误
-t 测试压缩文件完整性
-m 多个输入文件(表示自动输出文件名)
-r 在目录上递归操作(也设置为-m)
-l 使用旧格式压缩(Linux内核压缩)
-# 压缩效率(1-9),默认为1

实例

  • 压缩

    1
    lz4 filename
  • 解压

    1
    lz4 -d filename

lzip

简述

lzip 是一个无损的数据压缩和解压缩工具,它采用的是 LZMA 算法。

可以使用 Bandizip 解压缩

特征

后缀为 .lz

实例

  • 压缩

    1
    lzip filename
  • 解压

    1
    lzip -d filename

lzma

简述

LZMA,(Lempel-Ziv-Markov chain-Algorithm的缩写),是一个Deflate和LZ77算法改良和优化后的压缩算法,开发者是Igor Pavlov,2001年被首次应用于7-Zip压缩工具中,是 2001年以来得到发展的一个数据压缩算法。

Linux 命令行中可以直接调用 lzma 工具。

可以使用 Bandizip 解压缩。

特征

后缀为 .lzma

命令

命令 作用
-d 解压缩
-f 强制解压/压缩,忽略一切问题,比如:目标文件已经存在,直接覆盖等
-k 不删除原始文件
-t 测试,不解压
-v 显示进度等信息,
-z 强制压缩
-# 压缩比(1-9),默认1

实例

  • 压缩

    1
    lzma test.tar

    默认删除文件,如果需要保留需要使用 -k 选项

  • 解压

    1
    lzma -d test.tar.lzma

    默认删除文件,如果需要保留需要使用 -k 选项

lzop

简述

lzop 工具最适合在注重压缩速度的场合,压缩文件时会新建 .lzo 文件,而原文件保持不变 (使用 -U 选项除外)

特征

后缀为 .lzo

命令

命令 作用
-d 解压缩
-f 强制解压/压缩,忽略一切问题,比如:目标文件已经存在,直接覆盖等
-l 列出压缩文件的信息
-U 删除原始文件
-t 测试,不解压
-v 显示进度等信息,
-z 强制压缩
-# 压缩比(1-9),默认1

实例

  • 压缩

    1
    lzop filename
  • 解压

    1
    lzop -dv filename.lzo

tar

简述

Linux tar(英文全拼:tape archive )命令用于备份文件。

tar 是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。

可以使用 Bandizip 解压缩

特征

后缀为 .tar

命令

命令 作用
-c 建立一个压缩文件
-x 将压缩文件解压
-t 查看压缩文件详细信息
-z 是否需要用 gzip 压缩
-j 是否需要用 bzip2 压缩
-v 显示详细信息
-f 指定档名
-p 使用原文件的原来属性

实例

  • 打包

    1
    tar -cvf test.tar test.txt
  • gzip 压缩

    1
    tar -zcvf test.tar test.txt
  • bzip2 压缩

    1
    tar -jcvf test.tar test.txt
  • 解压缩

    1
    tar -zxvf test.tar

    还可以指定压缩包内的某个文件打开

    1
    tar -zxvf test.tar test.txt

xz

简述

xz 是一种压缩文件格式,采用LZMA SDK压缩,目标文件较 gzip 压缩文件小。

可以使用 Bandizip 解压缩。

特征

文件后缀为 .xz

命令

命令 作用
-d 解压缩
-z 强制压缩
-f 覆盖输出而不提示
-k 保留源文件(默认)
-v 详细模式
-q 取消警告;指定两次也可以取消错误
-t 测试压缩文件完整性
-m 多个输入文件(表示自动输出文件名)
-r 在目录上递归操作(也设置为-m)
-l 使用旧格式压缩(Linux内核压缩)
-# 压缩效率(1-9),默认为6

实例

  • 压缩

    1
    xz test.txt
  • 解压

    1
    xz -d test.txt.xz