当前位置: 首页 > ai >正文

12.压缩和打包

压缩和打包

  • 压缩和打包
    • 1. 压缩和解压缩
      • 1.1 compress 和 uncompress
      • 1.2 gzip和gunzip
      • 1.3 bzip2和bunzip2
      • 1.4 xz 和 unxz
      • 1.5 zip 和 unzip
      • 1.6 zcat
      • 1.7 压缩率比较
    • 2. 打包和解包
    • 3. split

压缩和打包

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				# 显示过程
http://www.xdnf.cn/news/19032.html

相关文章:

  • 创建第一个 Electron 应用:Hello World 示例
  • 【算法】15. 三数之和
  • 阻塞,非阻塞,同步,异步的理解
  • Linux -- 进程间通信【命名管道】
  • 【golang长途旅行第34站】网络编程
  • GPT-5原理
  • mybatis.xml直接读取配置文件(application.yml)中的数据
  • 图扑 HT 农林牧数据可视化监控平台
  • 计算机视觉----opencv(图像轮毂绘制(大小选择,排序,外接图形绘制),轮廓的近似,模板的匹配)
  • 10迁移TiDB数据库数据到GaussDB
  • 前端vue3入门学习
  • OSS Nginx 反代提示 SignatureDoesNotMatch
  • 【面试系列】谈谈你对数据库ACID的理解
  • 2023年12月GESP5级C++真题解析,包括选择判断和编程
  • 【MFC教程】C++基础:01 小黑框跑起来
  • 嵌入式学习 day61 DHT11、I2C
  • 数据分析编程第六步:大数据运算
  • MySQL-索引(下)
  • 【C语言初阶】指针_野指针,指针运算
  • 大白话说 AI 编程 Trae,小白进!
  • 【计算机网络】前端基础知识Cookie、localStorage、sessionStorage 以及 Token
  • 【上位机数据转换】数据结构原理及大小端
  • 0基础学智能体/工作流 从入门到精通(超详细课程)
  • Redis面试题--介绍下Redis几种集群模式
  • 序列容器(vector,deque,list)
  • 旧衣物回收小程序功能模块设计分析
  • 华为无线AC主备配置案例
  • CMake构建学习笔记22-libxml2库的构建
  • 不止于价格,DigitalOcean、AWS和Linode该选谁?
  • Vue3+TS+Element-Plus+el-tree创建树节点