压缩和打包
压缩和打包
1. 压缩和解压缩
主要针对单个文件压缩,而非目录
1.1 compress 和 uncompress
此工具来自于ncompress包,此工具目前已经很少使用
对应的文件是 .Z 后缀
compress [OPTION]... [FILE]...
uncompress [OPTION]... [FILE]...
-d # 解压缩,相当于于uncompress
-c # 结果输出至标准输出,不删除原文件
-f # 覆盖己存在目标文件
-v # 显示过程
-r # 递归压缩目录里面所有文件
1.2 gzip和gunzip
来自于 gzip 包
对应的文件是 .gz 后缀
gzip [OPTION]... FILE ...
gunzip [OPTION]... FILE ...
-c|--stdout # 将压缩数据输出到标准输出中,并保留原文件
-d|--decompress # 解压缩,相当于gunzip
-f|--force # 覆盖己存在目标文件
-k|--keep # 保留原文件
-l|--list # 显示原文件大小,压缩文件大小,压缩比,压缩前文件名
-q|--quiet # 安静模式,忽略警告
-r|--recursive # 递归压缩目录内所有文件
-S|--suffix=SUF # 指定压缩文件后缀
-t|--test # 测试,检测压缩文件是否完整
-v|--verbose # 显示过程
-1|--fast # 最快压缩,压缩比最底,但压缩速度快
-9|--best # 最好压缩,压缩比最高,但压缩速度慢
-N # 指定压缩等级,取值为1-9之间,默认6
1.3 bzip2和bunzip2
来自于 bzip2 包
对应的文件是 .bz2 后缀
bzip2 [OPTION]... FILE ...
bunzip2 [OPTION]... FILE ...
-d|--decompress # 解压缩,相当于bunzip2
-z|--compress # 强制压缩
-k|--keep # 保留原文件
-f|--force # 覆盖己存在目标文件
-t|--test # 测试,检测压缩文件是否完整
-c|--stdout # 将压缩数据输出到标准输出中,并保留原文件
-q|--quiet # 安静模式,忽略警告
-v|--verbose # 显示过程
-N # 指定压缩等级,取值为1-9之间,默认9
--fast # 同 -1
--best # 同 -9
1.4 xz 和 unxz
来自于 xz 包
对应的文件是 .xz 后缀
xz [OPTION]... FILE ...
unxz [OPTION]... FILE ...
-z|--compress # 强制压缩
-d|--decompress # 解压缩,相当于unxz
-t|--test # 测试,检测压缩文件是否完整
-l|--list # 查看压缩文件相关信息
-k|--keep # 保留原文件
-f|--force # 覆盖己存在目标文件
-c|--stdout # 将压缩数据输出到标准输出中,并保留原文件
-T|--threads=NUM # 开多线程,默认1
-q|--quiet # 安静模式,忽略警告
-v|--verbose # 显示过程
-N # 指定压缩等级,取值为1-9之间,默认6
1.5 zip 和 unzip
zip 可以实现打包目录和多个文件成一个文件并压缩,但可能会丢失文件属性信息,如:所有者和组信息
分别来自于 zip 和 unzip 包
对应的文件是 .zip 后缀
zip [OPTION]... zipfile [FILE]...
unzip [OPTION]... zipfile [FILE]...
# zip常用选项
-f # 更换较新的文件到压缩文件内
-u # 如果压缩包内有,则更新,如果没有,则追加进去
-d # 从压缩包内删除指定的文件
-m # 将文件压缩之后,删除原始文件
-r # 递归压缩目录
-j # 只保存文件名称及其内容,而不存放任何目录名称
-l # 压缩文件时,把LF字符置换成LF+CR字符,unzip -l 表示显示压缩文件的内容
-1 # 最快压缩,数字1
-9 # 最高压缩比,数字9
-q # 安静模式
-v # 显示过程
-c # 替每个被压缩的文件加上注释
-z # 给压缩包加注释,unzip -z 查看注释
-x # 压缩时排除指定文件
-i # 仅压缩指定文件
-D # 压缩文件内不建立目录名称
-T # 测试,检测压缩文件是否完整
-X # 不保存额外的文件属性
-y # 直接保存符号连接,而非该链接所指向的文件
-n # 不压缩以特定字符串结尾的文件
-P # 加密码
# unzip常用选项
-p # 将压缩内容通过管道传送
-l # 显示压缩文件内所包含的文件
-t # 测试,检测压缩文件是否完整
-z # 查看注释
-v # 列出包内文件信息
-x # 指定不需要解压缩的文件
-d # 指定解压后的目标目录
-n # 解压缩时不要覆盖原有的文件
-q # 安静模式
-o # 直接覆盖
-a # 对文本文件进行必要的字符转换
-j # 不处理压缩文件中原有的目录路径
-C # 压缩文件中的文件名称区分大小写
-L # 将压缩文件中的全部文件名改为小写
-X # 解压缩时同时回存文件原来的UID/GID
-V # 保留VMS的文件版本信息
-K # 解压缩后还原权限
-M # 将输出结果送到more程序处理
1.6 zcat
zcat 来源于 “zip cat” 的缩写,见字知义
其功能是在不解压的情况下查看压缩文件内容
zcat [OPTION]... [FILE]...
-c # 将内容输出到标准输出,默认
-d # 解压缩
-l # 显示压缩文件(包)内的文件列表
-r # 在目上递归操作
-t # 测试压缩文件完整性
1.7 压缩率比较
[root@rocky86 0725]# compress hwdb.bin -vc > hwdb.bin.Z
[root@rocky86 0725]# gzip -kv hwdb.bin
[root@rocky86 0725]# bzip2 -kv hwdb.bin
[root@rocky86 0725]# xz -kv hwdb.bin
[root@rocky86 0725]# zip -v hwdb.zip hwdb.bin
[root@rocky86 0725]# ll hwdb.* -h -S
-r--r--r-- 1 root root 11M Jul 26 20:48 hwdb.bin
-rw-r--r-- 1 root root 2.8M Jul 26 21:40 hwdb.bin.Z
-rw-r--r-- 1 root root 2.0M Jul 26 21:41 hwdb.zip
-r--r--r-- 1 root root 2.0M Jul 26 20:48 hwdb.bin.gz
-r--r--r-- 1 root root 1.7M Jul 26 20:48 hwdb.bin.bz2
-r--r--r-- 1 root root 1.4M Jul 26 20:48 hwdb.bin.xz
2. 打包和解包
tar 即 Tape ARchive 磁带归档,可以对目录和多个文件打包成一个文件进行归档; 其本身不具备压缩功能,但可以使用参数调用相应的压缩命令进行压缩;
此命令可以保留文件属性,推荐使用;
对应的文件是 .tar 后缀
tar [OPTION...] [FILE]...
#tar {A|c|d|r|t|u|x}[GnSkUWOmpsMBiajJzZhPlRvwo] [ARG...]
-A|--catenate|--concatenate # 追加 tar 文件至归档
-c|--create # 创建一个新归档
-d|--diff|--compare # 找出归档和文件系统的差异
--delete # 从归档(非磁带!)中删除
-r|--append # 追加文件至归档结尾
-t|--list # 列出归档内容
--test-label # 测试归档卷标并退出
-u|--update # 仅追加比归档中副本更新的文件
-x|--extract|--get # 从归档中解出文件
-f|--file=ARCHIVE # 指定压缩包文件,大多数必选
# OPTIONS选项 [GnSkUWOmpsMBiajJzZhPlRvwo],这些选项要注意位置
-G|--incremental # 处理老式的 GNU 格式的增量备份
-n|--seek # 归档可检索
-S|--sparse # 高效处理离散文件
-k|--keep-old-files # 解包时不覆盖已有的文件
-U|--unlink-first # 解压之前先删除文件的链接
-W|--verify # 在写入以后尝试校验归档
-O|--to-stdout # 解压文件至标准输出
--to-command=COMMAND # 将解压的文件通过管道传送至另一个程序
-m|--touch # 不要解压文件的修改时间
-p|--preserve-permissions|--same-permissions # 保留文件权限信息
-s|--preserve-order|--same-order # 成员参数按归档中的文件顺序列出
-M|--multi-volume # 创建/列出/解压多卷归档文件
-B|--read-full-records # 读取时重新分块(只对 4.2BSD 管道有效)
-i|--ignore-zeros # 忽略归档中的零字节块(即文件结尾)
-a|--auto-compress # 使用归档后缀名来决定压缩程序
-j|--bzip2 # 使用 bzip2 压缩或解压缩
-J|--xz # 使用 xz 压缩或解压缩
--lzip|--lzma|--lzop # lzip|xz --format=lzma|lzop
-z|--gzip|--gunzip|--ungzip # 通过 gzip 压缩或解压缩
-Z|--compress|--uncompress # 通过 compress 压缩或解压缩
-h|--dereference # 将软链接指向的目标文件也压缩打包
--hard-dereference # 将硬链接指向的目标文件也压缩打包
-P|--absolute-names # 不要从文件名中清除引导符‘/’
-l|--check-links # 只输出非链接文件的信息
-R|--block-number # 每个信息都显示归档内的块数
-v|--verbose # 列出文件详细信息
-w|--interactive|--confirmation # 操作前手动确认
-o # 用老旧的 V7 tar 格式打包或解包
# 其他选项
--show-defaults # 显示 tar 默认选项
--exclude # 排除文件
-C|--directory=DIR # 指定目录
-T|--files-from=FILE # 从文件中读取要处理的文件
-X|--exclude-from=FILE # 从文件中读取要排除的文件
--version # 显示版本号
#打包并压缩
[root@rocky86 0726]# tar -zcvf etc.tar.gz /etc/
[root@rocky86 0726]# tar -jcvf etc.tar.bz2 /etc/
[root@rocky86 0726]# tar -Jcvf etc.tar.xz /etc/
#解包
[root@rocky86 0726]# tar -zxvf etc.tar.gz -C /tmp/
[root@rocky86 0726]# tar -jxvf etc.tar.bz2 -C /tmp/
[root@rocky86 0726]# tar -Jxvf etc.tar.xz -C /tmp/
3. split
split 命令可以分割一个文件为多个文件
split [OPTION]... [FILE [PREFIX]]
-b|--bytes=SIZE # 按大小指定分割单位
-C|--line-bytes=SIZE # 同-b,但是在切割时将尽量维持每行的完整性
-d # 切割后小文件的后缀用数字表示
-l|--lines=NUMBER # 指定行数,按多少行切一个小文件
--verbose # 显示过程