linux打包压缩工具详解
Posted 向往自由的独行者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux打包压缩工具详解相关的知识,希望对你有一定的参考价值。
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打包压缩工具详解的主要内容,如果未能解决你的问题,请参考以下文章