linux打包压缩工具详解



1.linux文件压缩工具

压缩文件会减少文件的大小,对于传输效率会大大提高,而文本类型的压缩比是比较高的,另外单个小文件传输速率会比较慢,而单个文件传输效率会比较高。

注意:一般压缩工具解压缩文件时是根据文件后缀进行的,因此需要严格指定压缩文件的后缀。

下面介绍几种常用的压缩工具。

1.1 compress命令详解

  • compress:用于压缩文件

  • unconpress:用于解压缩文件

  • zcat:不解压查看压缩文件内容

    compress压缩的文件的后缀名为.Z

    conpress的常用选项如下:

    选项 说明
    -d 解压缩文件
    -c 结果输出至标准输出,不删除原文件,默认会把原文件删除
    -v 显示过程
    #安装软件包ncompress
    [root@xuzhichao test2]# yum install ncompress #示例一:使用compress对文件进行压缩,压缩后原文件默认删除,压缩文件以原文件名加上.Z后缀名组成。
    [root@xuzhichao test2]# ll
    total 236760
    -rw-r--r-- 1 root root 242439168 May 25 21:19 file
    [root@xuzhichao test2]# compress file
    [root@xuzhichao test2]# ll
    total 40
    -rw-r--r-- 1 root root 37451 May 25 21:19 file.Z #示例二:使用unconpress或compress -d选项对文件解压缩
    [root@xuzhichao test2]# compress -d file.Z
    #[root@xuzhichao test2]# uncompress file.Z
    [root@xuzhichao test2]# ll
    total 236760
    -rw-r--r-- 1 root root 242439168 May 25 21:19 file #示例三:使用compress -c选项压缩时保留原文件,需要使用重定向把屏幕的输出指定到文件中。
    [root@xuzhichao test2]# ll
    total 236760
    -rw-r--r-- 1 root root 242439168 May 25 21:19 file
    [root@xuzhichao test2]# gzip -c file > file.Z
    [root@xuzhichao test2]# ll
    total 236992
    -rw-r--r-- 1 root root 242439168 May 25 21:19 file
    -rw-r--r-- 1 root root 235312 May 25 21:21 file.Z #示例四:zcat查看压缩文件内容
    [root@xuzhichao test2]# cp /etc/passwd .
    [root@xuzhichao test2]# compress passwd
    [root@xuzhichao test2]# zcat passwd.Z
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    ......

1.2 gzip命令详解

gzip命令比compress应用更为广泛。

  • gzip:用于压缩文件

  • gunzip:用于解压缩文件

  • zcat:不解压查看压缩文件内容

    gzip压缩的文件后缀名为.gz

    gzip命令的常用选项如下:

    选项 说明
    -d 解压缩文件
    -c 结果输出至标准输出,不删除原文件,默认会把原文件删除
    -v 显示过程
    -# 1-9,指定压缩比,值越大,压缩比越大,但是压缩速度越慢,默认为6级别
    #示例一:使用gzip对文件进行压缩,压缩后原文件默认删除,压缩文件以原文件名加上.gz后缀名组成。
    [root@xuzhichao test2]# ll
    total 236992
    -rw-r--r-- 1 root root 242439168 May 25 21:19 file
    -rw-r--r-- 1 root root 235312 May 25 21:21 file.Z
    [root@xuzhichao test2]# gzip file
    [root@xuzhichao test2]# ll
    total 464
    -rw-r--r-- 1 root root 235312 May 25 21:21 file.Z
    -rw-r--r-- 1 root root 235312 May 25 21:19 file.gz #示例二:使用gzip -d选项或gunzip命令对文件解压缩,默认会删除压缩文件
    [root@xuzhichao test2]# gzip -d file.gz
    [root@xuzhichao test2]# ll
    total 236992
    -rw-r--r-- 1 root root 242439168 May 25 21:19 file
    -rw-r--r-- 1 root root 235312 May 25 21:21 file.Z #示例三:默认gzip压缩文件会删除原文件,使用-c选项可以保留原文件
    [root@xuzhichao test2]# ll
    total 236992
    -rw-r--r-- 1 root root 242439168 May 25 21:19 file
    -rw-r--r-- 1 root root 235312 May 25 21:21 file.Z
    [root@xuzhichao test2]# gzip -c file > file.gz
    [root@xuzhichao test2]# ll
    total 237224
    -rw-r--r-- 1 root root 242439168 May 25 21:19 file
    -rw-r--r-- 1 root root 235312 May 25 21:21 file.Z
    -rw-r--r-- 1 root root 235302 May 25 21:27 file.gz #示例四:zcat也可以查看gzip压缩的文件,同时可以使用zcat命令解压缩文件同时保留压缩文件
    [root@xuzhichao test2]# zcat file.gz > file
    [root@xuzhichao test2]# ll
    total 237224
    -rw-r--r-- 1 root root 242439168 May 25 21:27 file
    -rw-r--r-- 1 root root 235312 May 25 21:21 file.Z
    -rw-r--r-- 1 root root 235302 May 25 21:27 file.gz #示例五:gzip指定压缩级别,默认为6级别
    [root@xuzhichao test2]# ll
    total 473984
    -rw-r--r-- 1 root root 242439168 May 25 21:27 file
    -rw-r--r-- 1 root root 235312 May 25 21:21 file.Z
    -rw-r--r-- 1 root root 235302 May 25 21:27 file.gz
    -rw-r--r-- 1 root root 242439168 May 25 21:28 file2
    [root@xuzhichao test2]# gzip -9 file2
    [root@xuzhichao test2]# ll
    total 237456
    -rw-r--r-- 1 root root 242439168 May 25 21:27 file
    -rw-r--r-- 1 root root 235312 May 25 21:21 file.Z
    -rw-r--r-- 1 root root 235312 May 25 21:27 file.gz
    -rw-r--r-- 1 root root 235298 May 25 21:28 file2.gz
    #PS:实际测试调整压缩比压缩文件并不理想,不建议修改。 #示例六:gzip可以配合管道,实现对管道传过来的输入信息进行压缩
    [root@xuzhichao test2]# dmesg > dmesg.log
    [root@xuzhichao test2]# dmesg | gzip > dmesg.log.gz
    [root@xuzhichao test2]# ll dmesg.log*
    -rw-r--r-- 1 root root 125129 May 25 21:31 dmesg.log
    -rw-r--r-- 1 root root 23026 May 25 21:32 dmesg.log.gz

1.3 bzip2命令详解

bzip2比前两个压缩命令就有更好的压缩比。

  • bzip2:用于压缩文件

  • bunzip2:用于解压缩文件

  • bzcat:不解压查看bzip2压缩文件内容

    bzip2压缩的文件的后缀名是.bz2

    bzip2命令的常用选项如下:

    选项 说明
    -k 保留原文件,默认bzip2压缩后会删除原文件
    -d 接压缩文件
    -# 1-9,指定压缩比,值越大,压缩比越大,但是压缩速度越慢,默认为9级别
    #示例一:使用bzip2压缩文件,压缩比较高
    [root@xuzhichao test2]# ll
    total 237456
    -rw-r--r-- 1 root root 242439168 May 25 21:27 file
    -rw-r--r-- 1 root root 235312 May 25 21:21 file.Z
    -rw-r--r-- 1 root root 235312 May 25 21:27 file.gz
    [root@xuzhichao test2]# bzip2 -k file
    [root@xuzhichao test2]# ll
    total 237228
    -rw-r--r-- 1 root root 242439168 May 25 21:27 file
    -rw-r--r-- 1 root root 235312 May 25 21:21 file.Z
    -rw-r--r-- 1 root root 209 May 25 21:27 file.bz2
    -rw-r--r-- 1 root root 235312 May 25 21:27 file.gz #示例二:解压缩文件
    [root@xuzhichao test2]# bzip2 -d file.bz2

1.4 xz命令详解

xz是一个较新的压缩工具,也具有比较高的压缩比。

  • xz:用于压缩文件

  • unxz:用于解压缩文件

  • xzcat:不解压查看xz压缩文件内容

    xz压缩的文件的后缀名是.xz

    xz命令的常用选项如下:

    选项 说明
    -k 保留原文件,默认xz压缩后会删除原文件
    -d 接压缩文件
    -# 1-9,指定压缩比,值越大,压缩比越大,但是压缩速度越慢,默认为9级别
    #示例一:使用xz压缩文件
    #[root@xuzhichao test2]# ll
    total 237228
    -rw-r--r-- 1 root root 242439168 May 25 21:27 file
    -rw-r--r-- 1 root root 235312 May 25 21:21 file.Z
    -rw-r--r-- 1 root root 209 May 25 21:27 file.bz2
    -rw-r--r-- 1 root root 235312 May 25 21:27 file.gz
    [root@xuzhichao test2]# xz -k file
    [root@xuzhichao test2]# ll
    total 237264
    -rw-r--r-- 1 root root 242439168 May 25 21:27 file
    -rw-r--r-- 1 root root 235312 May 25 21:21 file.Z
    -rw-r--r-- 1 root root 209 May 25 21:27 file.bz2
    -rw-r--r-- 1 root root 235312 May 25 21:27 file.gz
    -rw-r--r-- 1 root root 35396 May 25 21:27 file.xz #示例二:解压缩文件
    [root@xuzhichao test2]# xz -d file.xz

1.5 zip命令详解

  • zip:用于对文件或目录进行压缩,以上压缩工具仅支持对文件进行压缩,不支持对目录进行压缩

  • unzip:用于文件或目录进行解压缩

    使用zip命令压缩的文件后缀名为.zip

    zip的命令使用格式为:

    zip [options] FILE.ZIP FILE
    说明:
    FILE:为需要压缩的文件或目录
    FILE.ZIP:为压缩的文件名

    zip主要参数如下:

    选项 说明
    -r 用于对目录文件进行压缩
    -T 检查zip压缩包是否是完整的

    unzip的主要参数如下:

    选项 说明
    -l或-t 不解压查看压缩包的内容
    -d 指定zip压缩包的内容解压到何处
    -p 内容输出到屏幕

    zip命令的使用示例如下:

    #安装zip和unzip工具包
    [root@xuzhichao test2]# yum install zip unzip #示例一:使用zip压缩文件,默认不会删除原文件
    [root@xuzhichao test2]# ll
    total 237264
    -rw-r--r-- 1 root root 242439168 May 25 21:27 file
    -rw-r--r-- 1 root root 235312 May 25 21:21 file.Z
    -rw-r--r-- 1 root root 209 May 25 21:27 file.bz2
    -rw-r--r-- 1 root root 235312 May 25 21:27 file.gz
    -rw-r--r-- 1 root root 35396 May 25 21:27 file.xz
    [root@xuzhichao test2]# zip file.zip file
    adding: file (deflated 100%)
    [root@xuzhichao test2]# ll
    total 237496
    -rw-r--r-- 1 root root 242439168 May 25 21:27 file
    -rw-r--r-- 1 root root 235312 May 25 21:21 file.Z
    -rw-r--r-- 1 root root 209 May 25 21:27 file.bz2
    -rw-r--r-- 1 root root 235312 May 25 21:27 file.gz
    -rw-r--r-- 1 root root 35396 May 25 21:27 file.xz
    -rw-r--r-- 1 root root 235447 May 26 15:25 file.zip #示例二:使用zip压缩目录,使用-r参数
    root@xuzhichao data]# zip -r test.zip test2
    adding: test2/ (stored 0%)
    adding: test2/file.Z (stored 0%)
    adding: test2/file (deflated 100%)
    adding: test2/file.gz (deflated 100%)
    adding: test2/file.bz2 (deflated 63%)
    adding: test2/file.xz (deflated 98%)
    adding: test2/file.zip (stored 0%)
    [root@xuzhichao data]# ll
    -rw-r--r-- 1 root root 708565 May 26 15:26 test.zip #示例三:解压缩文件,若存在同名文件,会提示是否覆盖
    [root@xuzhichao test2]# unzip file.zip
    Archive: file.zip
    replace file? [y]es, [n]o, [A]ll, [N]one, [r]ename: r
    new name: file2
    inflating: file2 #示例四:解压目录,会解压到文件的原始位置,并提示是否覆盖
    [root@xuzhichao data]# unzip test.zip
    Archive: test.zip
    replace test2/file.Z? [y]es, [n]o, [A]ll, [N]one, [r]ename: A
    extracting: test2/file.Z
    inflating: test2/file
    inflating: test2/file.gz
    inflating: test2/file.bz2
    inflating: test2/file.xz
    extracting: test2/file.zip #示例五:检查zip压缩包是否是完整的
    [root@xuzhichao data]# zip -T test.zip
    test of test.zip OK #示例六:使用-d选项指定解压缩位置
    [root@xuzhichao data]# unzip test.zip -d test3
    Archive: test.zip
    creating: test3/test2/
    extracting: test3/test2/file.Z
    inflating: test3/test2/file
    inflating: test3/test2/file.gz
    inflating: test3/test2/file.bz2
    inflating: test3/test2/file.xz
    extracting: test3/test2/file.zip
    [root@xuzhichao data]# ll test3/
    total 0
    drwxr-xr-x 2 root root 94 May 26 15:25 test2 #示例七:查看压缩文件内容,使用unzip -l参数
    [root@xuzhichao data]# unzip -l test.zip
    Archive: test.zip
    Length Date Time Name
    --------- ---------- ----- ----
    0 05-26-2021 15:25 test2/
    235312 05-25-2021 21:21 test2/file.Z
    242439168 05-25-2021 21:27 test2/file
    235312 05-25-2021 21:27 test2/file.gz
    209 05-25-2021 21:27 test2/file.bz2
    35396 05-25-2021 21:27 test2/file.xz
    235447 05-26-2021 15:25 test2/file.zip
    --------- -------
    243180844 7 files
    [root@xuzhichao data]# unzip -l /data/test2/file.zip
    Archive: /data/test2/file.zip
    Length Date Time Name
    --------- ---------- ----- ----
    242439168 05-25-2021 21:27 file
    --------- -------
    242439168 1 file #示例八:配合管道实现对输入重定向的内容进行压缩
    [root@xuzhichao data]# cat /var/log/messages | zip messages.zip -
    adding: - (deflated 86%)
    [root@xuzhichao data]# ll messages.zip
    -rw-r--r-- 1 root root 46728 May 26 16:11 messages.zip #示例九:-p配合重定向进行解压
    [root@xuzhichao data]# unzip -p test2/file.zip > file

2.linux文件打包工具

2.1 tar命令详解

tar是linux中常用的一个打包工具,可以对文件和目录进行打包,还可以配合压缩工具同时进行打包压缩。

tar命令的语法如下:

tar [OPTION...] [FILE]...

tar命令的常用选项如下:

选项 说明
-c 创建归档文件
-t 查看归档文件内容
-x 将归档文件解包
-f 指定归档文件
-p 保留文件的原始权限,多用于备份
-C 指定归档文件解包目录
-z 使用gzip格式压缩
-j 使用bzip2格式压缩
-J 使用xz格式压缩
--exclude 排除文件
-T 指定需要打包的文件列表
-X 指定要排除打包的文件列表
-v 显示过程
-r 向归档文件中追加文件,注意归档为文件不能被压缩,否则无法追加文件
-P (大写P)可以保留绝对目录压缩

tar命令的常用组合选项如下:

组合选项 说明
czvf 使用gzip格式打包压缩
cjvf 使用bzip2格式打包压缩文件
cJVF 使用xz格式打包压缩
tf 查看压缩包内容
xvf 自动选择压缩格式对归档文件解包

tar命令的常用后缀名如下:

后缀名 说明
tar.gz 使用gzip格式压缩的文件
tar.bz2 使用bzip2格式压缩的文件
tar.xz 使用xz格式压缩的文件

tar命令的常见用法示例如下:

#tar包安装
[root@xuzhichao data]# yum install tar #示例一:使用gzip,bzip2,xz分别压缩打包文件
[root@xuzhichao data]# tar czvf repo.tar.gz /etc/yum.repos.d/
tar: Removing leading `/' from member names
/etc/yum.repos.d/
/etc/yum.repos.d/backup/
/etc/yum.repos.d/backup/CentOS-Base.repo
/etc/yum.repos.d/backup/CentOS-CR.repo
/etc/yum.repos.d/backup/CentOS-Debuginfo.repo
/etc/yum.repos.d/backup/CentOS-fasttrack.repo
/etc/yum.repos.d/backup/CentOS-Media.repo
/etc/yum.repos.d/backup/CentOS-Sources.repo
/etc/yum.repos.d/backup/CentOS-Vault.repo
/etc/yum.repos.d/backup/CentOS-x86_64-kernel.repo
/etc/yum.repos.d/base.repo [root@xuzhichao data]# tar cjvf repo.tar.bz2 /etc/yum.repos.d/
tar: Removing leading `/' from member names
/etc/yum.repos.d/
/etc/yum.repos.d/backup/
/etc/yum.repos.d/backup/CentOS-Base.repo
/etc/yum.repos.d/backup/CentOS-CR.repo
/etc/yum.repos.d/backup/CentOS-Debuginfo.repo
/etc/yum.repos.d/backup/CentOS-fasttrack.repo
/etc/yum.repos.d/backup/CentOS-Media.repo
/etc/yum.repos.d/backup/CentOS-Sources.repo
/etc/yum.repos.d/backup/CentOS-Vault.repo
/etc/yum.repos.d/backup/CentOS-x86_64-kernel.repo
/etc/yum.repos.d/base.repo [root@xuzhichao data]# tar cJvf repo.tar.xz /etc/yum.repos.d/
tar: Removing leading `/' from member names
/etc/yum.repos.d/
/etc/yum.repos.d/backup/
/etc/yum.repos.d/backup/CentOS-Base.repo
/etc/yum.repos.d/backup/CentOS-CR.repo
/etc/yum.repos.d/backup/CentOS-Debuginfo.repo
/etc/yum.repos.d/backup/CentOS-fasttrack.repo
/etc/yum.repos.d/backup/CentOS-Media.repo
/etc/yum.repos.d/backup/CentOS-Sources.repo
/etc/yum.repos.d/backup/CentOS-Vault.repo
/etc/yum.repos.d/backup/CentOS-x86_64-kernel.repo
/etc/yum.repos.d/base.repo [root@xuzhichao data]# ll repo.tar.*
-rw-r--r-- 1 root root 2626 May 26 17:22 repo.tar.bz2
-rw-r--r-- 1 root root 2780 May 26 17:19 repo.tar.gz
-rw-r--r-- 1 root root 2532 May 26 17:22 repo.tar.xz #示例二:预览打包文件内容,使用tvf选项,注意v选项会以长格式显示文件列表
[root@xuzhichao data]# tar tvf repo.tar.bz2
drwxr-xr-x root/root 0 2020-11-03 17:48 etc/yum.repos.d/
drwxr-xr-x root/root 0 2020-11-03 17:48 etc/yum.repos.d/backup/
-rw-r--r-- root/root 1664 2020-04-08 06:01 etc/yum.repos.d/backup/CentOS-Base.repo
-rw-r--r-- root/root 1309 2020-04-08 06:01 etc/yum.repos.d/backup/CentOS-CR.repo
-rw-r--r-- root/root 649 2020-04-08 06:01 etc/yum.repos.d/backup/CentOS-Debuginfo.repo
-rw-r--r-- root/root 314 2020-04-08 06:01 etc/yum.repos.d/backup/CentOS-fasttrack.repo
-rw-r--r-- root/root 630 2020-04-08 06:01 etc/yum.repos.d/backup/CentOS-Media.repo
-rw-r--r-- root/root 1331 2020-04-08 06:01 etc/yum.repos.d/backup/CentOS-Sources.repo
-rw-r--r-- root/root 7577 2020-04-08 06:01 etc/yum.repos.d/backup/CentOS-Vault.repo
-rw-r--r-- root/root 616 2020-04-08 06:01 etc/yum.repos.d/backup/CentOS-x86_64-kernel.repo
-rw-r--r-- root/root 131 2020-11-03 17:48 etc/yum.repos.d/base.repo [root@xuzhichao data]# tar tf repo.tar.bz2
etc/yum.repos.d/
etc/yum.repos.d/backup/
etc/yum.repos.d/backup/CentOS-Base.repo
etc/yum.repos.d/backup/CentOS-CR.repo
etc/yum.repos.d/backup/CentOS-Debuginfo.repo
etc/yum.repos.d/backup/CentOS-fasttrack.repo
etc/yum.repos.d/backup/CentOS-Media.repo
etc/yum.repos.d/backup/CentOS-Sources.repo
etc/yum.repos.d/backup/CentOS-Vault.repo
etc/yum.repos.d/backup/CentOS-x86_64-kernel.repo
etc/yum.repos.d/base.repo #示例三:tar解归档文件,默认解压缩到当前目录,使用-C选项解压到指定目录
#xf可以自动选择压缩算法,无需指定。
[root@xuzhichao data]# tar xvf repo.tar.bz2 -C test3
etc/yum.repos.d/
etc/yum.repos.d/backup/
etc/yum.repos.d/backup/CentOS-Base.repo
etc/yum.repos.d/backup/CentOS-CR.repo
etc/yum.repos.d/backup/CentOS-Debuginfo.repo
etc/yum.repos.d/backup/CentOS-fasttrack.repo
etc/yum.repos.d/backup/CentOS-Media.repo
etc/yum.repos.d/backup/CentOS-Sources.repo
etc/yum.repos.d/backup/CentOS-Vault.repo
etc/yum.repos.d/backup/CentOS-x86_64-kernel.repo
etc/yum.repos.d/base.repo [root@xuzhichao data]# tree test3/etc/
test3/etc/
`-- yum.repos.d
|-- backup
| |-- CentOS-Base.repo
| |-- CentOS-CR.repo
| |-- CentOS-Debuginfo.repo
| |-- CentOS-Media.repo
| |-- CentOS-Sources.repo
| |-- CentOS-Vault.repo
| |-- CentOS-fasttrack.repo
| `-- CentOS-x86_64-kernel.repo
`-- base.repo #示例四:如果需要向归档文件追加文件,使用-r选项
[root@xuzhichao data]# tar cf repo.tar /etc/yum.repos.d/
tar: Removing leading `/' from member names
[root@xuzhichao data]# tar rf repo.tar /boot/
tar: Removing leading `/' from member names

注意:使用tar压缩后,会提示“tar: Removing leading `/' from member names”。

意思是移除每个文件名的根目录,这样主要是为了安全,例如使用tar备份/etc目录到root目录下的etc.tar.bz文件,如果要解归档文件,在tar归档文件中所记录的文件名就是解压缩后的实际档名,如果没有拿掉目录,解压缩后档名就是绝对路径,数据会覆盖到到/etc/xxx去,原本的/etc/下的数据就会丢失。拿掉了根目录,假设将备份的数据在/tmp解开,那么解压缩的档名就会变成/tmp/etc/xxx。-P选项会不移除根目录。

当需要打包文件夹内的部分内容,或需要排除,增加很多文件时,可以将需要打包和需要排除的文件路径分别写入一个路径文件,利用-T和-X读取路径文件,进行打包。

#示例:打包/etc和/boot目录,除了exlist中的文件。
[root@xuzhichao test1]# cat list.txt
/etc
/boot
[root@xuzhichao test1]# cat exlist.txt
/etc/fstab
/etc/passwd
/etc/hosts
/boot/config-3.10.0-1127.el7.x86_64
/boot/grub
[root@xuzhichao test1]# tar -cvpjf backup.tar.bz -T list.txt -X exlist.txt
[root@xuzhichao test1]# ll
total 146168
-rw-r--r-- 1 root root 149665940 May 26 23:07 backup.tar.bz

2.2 cpio命令详解

cpio命令和tar命令一样,可以打包文件或目录,也可以对打包文件进行解包,主要解包以cpio和tar结尾的文件。

cpio的主要语法如下:

cpio [OPTION...] [destination-directory]

cpio的常用选项如下:

选项 说明
-o 归档模式,cpio将向归档文件中拷贝文件
-i 提取模式,cpio从归档文件中提取文件,或列出归档文件中的文件列表
-t 预览,列出标准输入的归档文件中的文件列表
-v 显示过程
-u 解包时或文件名冲突会覆盖原始文件

cpio的常用组合选项如下:

组合选项 说明
-ov 打包文件,一般通过ls或find的标准输出获取打包文件
-tv 查看打包文件
-idv 解包文件

注意:只有在当前目录下找到文件并且执行cpio,cpio中的内容是当前路径,否则是绝对路径,解包时会以绝对路径解包。

cpio的使用示例如下:

#cpio安装包
[root@xuzhichao test1]# rpm -q cpio
cpio-2.11-27.el7.x86_64 #示例一:打包文件
[root@xuzhichao test1]# find /etc/ -name "*.conf" | cpio -ov > conf.cpio #示例二:查看打包文件
[root@xuzhichao test1]# cpio -tv < conf.cpio
-rw-r--r-- 1 root root 53 May 26 22:58 /etc/resolv.conf
...... #示例三:解打包文件,默认会解包到原始文件下,解包时若文件冲突,默认不会覆盖原文件,加上-u选项会覆盖原文件
[root@xuzhichao test1]# cpio -idv < conf.cpio
cpio: /etc/resolv.conf not created: newer or same age version exists
/etc/resolv.conf
...... #示例四:/boot/initramfs-3.10.0-1127.el7.x86_64.img文件即为cpio打包文件
[root@xuzhichao boot]# file initramfs-3.10.0-1127.el7.x86_64.img
initramfs-3.10.0-1127.el7.x86_64.img: ASCII cpio archive (SVR4 with no CRC)
[root@xuzhichao boot]# cpio -tv < initramfs-3.10.0-1127.el7.x86_64.img
drwxr-xr-x 3 root root 0 Nov 4 2020 .
drwxr-xr-x 3 root root 0 Nov 4 2020 kernel
drwxr-xr-x 3 root root 0 Nov 4 2020 kernel/x86
drwxr-xr-x 2 root root 0 Nov 4 2020 kernel/x86/microcode
-rw-r--r-- 1 root root 100352 Nov 4 2020 kernel/x86/microcode/GenuineIntel.bin
-rw-r--r-- 1 root root 2 Nov 4 2020 early_cpio
198 blocks

2.3 split命令详解

split工具用于对大文件进行切割,切割成多个小文件。

split命令的常用选项如下:

split [OPTION]... [FILE [PREFIX]]
选项 说明
-b 指定切割单位的大小
-d 使用数值区分文件的后缀名
#示例一:切割文件,默认是以字母为切割文件的后缀的。
[root@xuzhichao data]# ll -h
total 320M
-rw-r--r-- 1 root root 320M May 27 00:18 exp.tar [root@xuzhichao data]# split -b 20M exp.tar newfile
[root@xuzhichao data]# ll
total 655040
-rw-r--r-- 1 root root 335380480 May 27 00:18 exp.tar
-rw-r--r-- 1 root root 20971520 May 27 00:20 newfileaa
-rw-r--r-- 1 root root 20971520 May 27 00:20 newfileab
-rw-r--r-- 1 root root 20971520 May 27 00:20 newfileac
-rw-r--r-- 1 root root 20971520 May 27 00:20 newfilead
-rw-r--r-- 1 root root 20971520 May 27 00:20 newfileae
-rw-r--r-- 1 root root 20971520 May 27 00:20 newfileaf
-rw-r--r-- 1 root root 20971520 May 27 00:20 newfileag
-rw-r--r-- 1 root root 20971520 May 27 00:20 newfileah
-rw-r--r-- 1 root root 20971520 May 27 00:20 newfileai
-rw-r--r-- 1 root root 20971520 May 27 00:20 newfileaj
-rw-r--r-- 1 root root 20971520 May 27 00:20 newfileak
-rw-r--r-- 1 root root 20971520 May 27 00:20 newfileal
-rw-r--r-- 1 root root 20971520 May 27 00:20 newfileam
-rw-r--r-- 1 root root 20971520 May 27 00:20 newfilean
-rw-r--r-- 1 root root 20971520 May 27 00:20 newfileao
-rw-r--r-- 1 root root 20807680 May 27 00:20 newfileap #示例二:使用数值做为切割文件的后缀
[root@xuzhichao data]# split -d -b 20M exp.tar newsplit
[root@xuzhichao data]# ll newsplit*
-rw-r--r-- 1 root root 20971520 May 27 00:22 newsplit00
-rw-r--r-- 1 root root 20971520 May 27 00:22 newsplit01
-rw-r--r-- 1 root root 20971520 May 27 00:22 newsplit02
-rw-r--r-- 1 root root 20971520 May 27 00:22 newsplit03
-rw-r--r-- 1 root root 20971520 May 27 00:22 newsplit04
-rw-r--r-- 1 root root 20971520 May 27 00:22 newsplit05
-rw-r--r-- 1 root root 20971520 May 27 00:22 newsplit06
-rw-r--r-- 1 root root 20971520 May 27 00:22 newsplit07
-rw-r--r-- 1 root root 20971520 May 27 00:22 newsplit08
-rw-r--r-- 1 root root 20971520 May 27 00:22 newsplit09
-rw-r--r-- 1 root root 20971520 May 27 00:22 newsplit10
-rw-r--r-- 1 root root 20971520 May 27 00:22 newsplit11
-rw-r--r-- 1 root root 20971520 May 27 00:22 newsplit12
-rw-r--r-- 1 root root 20971520 May 27 00:22 newsplit13
-rw-r--r-- 1 root root 20971520 May 27 00:22 newsplit14
-rw-r--r-- 1 root root 20807680 May 27 00:22 newsplit15

当需要把切割后的文件进行合并时,可以使用cat和重定向的方式进行合并,示例如下:

#示例:
[root@xuzhichao data]# cat newsplit* > newexp.tar
[root@xuzhichao data]# rm -f newsplit*
[root@xuzhichao data]# tar tf newexp.tar
test1/
test1/list.txt
test1/exlist.txt
test1/backup.tar.bz
test1/boot.cpio
test1/a.cpio
test1/b.cpio
test1/root.cpio
test1/conf.cpio
test1/etc.tar

linux打包压缩工具详解的更多相关文章

  1. Linux常用命令详解—基于CentOS7

    ## Linux 目录- /:根目录,一般只存放目录,不存放文件- /bin -> /usr/bin:可执行二进制文件的目录,也是常用命令目录,如常用的命令 ls.cat.mv 等- /boot ...

  2. linux awk命令详解

    linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...

  3. Linux启动过程详解(inittab、rc.sysinit、rcX.d、rc.local)

    启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬 ...

  4. Linux启动过程详解

    Linux启动过程详解 附上两张图,加深记忆 图1: 图2: 第一张图比较简洁明了,下面对第一张图的步骤进行详解: 加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的 ...

  5. Linux /dev目录详解和Linux系统各个目录的作用

    Linux /dev目录详解(转http://blog.csdn.net/maopig/article/details/7195048) 在linux下,/dev目录是很重要的,各种设备都在下面.下面 ...

  6. linux cat 命令详解

    linux cat 命令详解 http://linux.chinaunix.net/techdoc/system/2007/11/16/972467.shtml adb shell su //这个不一 ...

  7. 【初级】linux rm 命令详解及使用方法实战

    rm:删除命令 前言: windows中的删除命令大家都不陌生,linux中的删除命令和windows中有一个共同特点,那就是危险,前两篇linux mkdir 命令详解及使用方法实战[初级]中我们就 ...

  8. 用Advanced Installer制作DotNetBar for Windows Forms 12.0.0.1_冰河之刃重打包版详解

    关于 DotNetBar for Windows Forms 12.0.0.1_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版-------------- ...

  9. Linux netstat命令详解

    Linux netstat命令详解 一  简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多 ...

  10. Linux crontab 命令详解

    在 Linux 中,任务可以被配置在指定的时间段.指定的日期.或系统平均载量低于指定的数量时自动运行.红帽企业 Linux 预配置了对重要系统任务的运行,以便使系统能够时时被更新.譬如,被 locat ...

随机推荐

  1. 初学 FSMC - 外扩SRAM(三)

    1. FSMC相关函数 //FSMC初始化 void FSMC_NORSRAMInit(FSMC_NORSRAMInitTypeDef* FSMC_NORSRAMInitStruct); //FSMC ...

  2. Python连接mysql数据库和关闭数据库的方法

    1 import pymysql 2 def get_conn(): 3 """ 4 :return: 连接,游标 5 """ 6 # 创建 ...

  3. Make It Equal 题解

    Problem Link 简要题意 翻译很清楚. 思路 提供一种简单直接的思路. 可以发现最多会操作 \(n\) 次. 那么就可以每次直接枚举切的高度 \(h\),检查更改是否超过 \(k\),之后暴 ...

  4. CSP2019-S2总结

    目录 前言 洛谷 5657 格雷码 代码(找规律) 洛谷 5658 括号树 分析 代码 洛谷 5659 树上的数 洛谷 5664 Emiya 家今天的饭 洛谷 5665 划分 分析 代码 洛谷 566 ...

  5. Go 项目依赖注入wire工具最佳实践介绍与使用

    目录 一.引入 二.控制反转与依赖注入 三.为什么需要依赖注入工具 3.1 示例 3.2 依赖注入写法与非依赖注入写法 四.wire 工具介绍与安装 4.1 wire 基本介绍 4.2 安装 五.Wi ...

  6. Velero系列文章(五):基于 Velero 的 Kubernetes 集群备份容灾生产最佳实践

    考量维度 基于CSI 快照 基于Restic 文件复制 应用性能影响 低,CSI 接口调用存储系统快照 取决于数据量,占用额外资源 数据可用性 依赖于存储系统 对象存储和生产环境隔离,独立可用性,支持 ...

  7. sql 语句系列(多表之链二)[八百章之第四章]

    从多个表中返回缺失值 比如说查询每个员工的部门,且查看部门的所有员工. 这里考虑一种情况就是可能有部门没有员工,同样有些员工还没有分配部门. 解析使用 full outer join. select ...

  8. 重新整理.net core 计1400篇[四] (.net core 修改sdk )

    前言 可能有些人还不知道什么是sdk,software development kit,中文是软件开发包的意思. 然后什么是软件开发包? 软件开发工具包是一些被软件工程师用于为特定的软件包.软件框架. ...

  9. c# webapi 自定义返回数据

    前言 webapi呢,我们创建的时候我给我们5个方法:get get(data)put post delete. 很明显,get,get(data)是用来获取,post用来修改数据的,put,dele ...

  10. MMdeploy TensorRT 模型实时监控桌面,PyQt5实现

    本项目遵从:GNU General Public License v3.0 个人博客『 gy77 』: GitHub仓库 :代码源码详见仓库 demo_qt.py 我的CSDN博客 我的博客园 简介: ...