Linux压缩与解压
tra.xz压缩—最常用
tar.xz
:采用LZMA/XZ算法
,压缩率最高
,但压缩/解压速度最慢
;
Ubuntu
需要安装XZ
压缩工具
# ubuntu安装XZ压缩工具
apt-get install xz-utils
# Centos7自带xz,不用压缩
- tar.xz压缩示例:
# tar.xz压缩
## -J 表示调用xz压缩工具
## -c tar的打包参数
## -v 显示详情,进度
## -f 指定文件名称,必须放到所有选项后面
tar Jcvf ${压缩后的文件}.tra.xz 要压缩的文件
tar.xz解压
# 解压到当前目录
tar xvf filename.tra.xz
## -C 解压到指定目录
tar xvf filename.tra.xz -C /app/
tar压缩和解压工具
tar
是一个Linux打包工具,和三方压缩组件
配合,能非常方便的打包
并压缩
文件和目录
.
# Centos8最小化安装的系统没有tar包
yum install tar -y
tar只查看不解压
# 只查看不解压
## -t 列出归档内容
## -v 查看详情,进度
## -f 指定文件名称,必须放到所有选项后面
tar -tvf extundelete-0.2.4.tar.bz2
tar解压
.tar.*
类型压缩包,统一
用tar -xvf
解压
可以解压tar.gz
,tar.bz2
,tar.xz
,tar.z
等格式
- 解压
tar -vxf 文件名.tar.gz
-
v
代表解压的时候打印出所有的文件 -
x
代表解压缩 -
f
指定文件,必须
是放在最后
-
k
保留原有文件不覆盖 -
-C
解压到指定目录tar -vxf 文件名.tar.gz -C 指定目录
-
# 解压tar包
## -x 解压缩
## -v 显示详情
## -f 指定要解压的文件
tar xvf file.tar
tar xvf ${FileName}.tar.gz
## -C 解压到指定目录
tar -xvf bbs.tar.gz -C /zzz/bbs
## -k 保留原有文件不覆盖
tar -xvfk bbs.tar.gz -C /zzz/bbs
tar只打包不压缩
# -cvf 表示只打包不使用压缩
## -c tar的打包参数
## -v 显示详情,进度
## -f 指定文件名称,必须放到所有选项后面
tar -cvf FileName.tar DirName
tar打包并压缩
查看tar
的三方压缩组件
[rocky root ~]# tar --help|grep z
-i, --ignore-zeros 忽略归档中的零字节块(即文件结尾)
--record-size=NUMBER 每个记录的字节数 NUMBER,乘以 512
-j, --bzip2 通过 bzip2 过滤归档
-J, --xz 通过 xz 过滤归档
--lzip 通过 lzip 过滤归档
--lzma 通过 xz --format=lzma 过滤归档
--lzop 通过 lzop 过滤归档
-z, --gzip, --gunzip, --ungzip 通过 gzip 过滤归档
tar.gz压缩
tar.gz
: 采用Gzip算法
,压缩率最低,但压缩/解压速度最快
压缩打包
命令tar zcvf
z
代表调用gzip
压缩c
代表压缩v
显式过程f
指定目录
压缩打包
指定目录:
-tar zcvf 压缩后的文件名.tar.gz 目录名
压缩打包
指定文件- 例如:
tar -zcvf hello.tar.gz agileone.sql
- 注意:生成的文件后缀名必须是
.tar.gz
tar -zcvf 19.tar.gz hello
- 例如:
# 压缩tar.gz
## -z 使用`gzip`压缩
## -c tar的打包参数
## -v 显示详情,进度
## -f 指定文件名称,必须放到所有选项后面
tar zcvf 压缩后文件名.tar.gz 目标名
tar zcvf FileName.tar.gz DirName
gz压缩和解压
参考: https://www.linuxcool.com/gzip
gzip压缩
gzip不能直接压缩目录,只能压缩单个文件
# gzip压缩文件
gzip file01
gip压缩文件后会生成${文件名.gz}文件
,并自动将源文件删除
.
## -v 显示过程
## -9 压缩级别
gzip -v9 file01
gzip解压
# -d 解压
## gzip解压后会删除原有的.gz文件
gzip -d file.gz
## -d 解压
## -v 显示进度
gzip -dv file01.gz
tar.gz压缩过程
- 先使用tar将文件打包
## tar.gz压缩原理
# 将目录里所有jpg文件打包成jpg.tar
tar -cvf jpg.tar *.jpg
- 再使用gzip将tar包压缩
# gzip将jpg.tar压缩后,文件变成了jpg.tar.gz
gzip jpg.tar
tar.bz2压缩
tar.bz2
: 采用BZip2
算法,压缩率较xz
次之,速度比xz快
但比gzip慢.
# centos安装bzip2
yum install bzip2 -y
- tar.bz2压缩示例:
# 将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
## -j 表示调用bz2压缩工具
## -c tar的打包参数
## -v 显示详情,进度
## -f 指定文件名称,必须放到所有选项后面
tar -jcvf jpg.tar.bz2 *.jpg
tar.z压缩----已淘汰
tar.z
: 属于Unix旧式compress压缩格式,压缩率最差,目前基本被淘汰
#将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
## -Z 表示调用Unix旧式compress压缩工具
## -c tar的打包参数
## -v 显示详情,进度
## -f 指定文件名称,必须放到所有选项后面
tar -Zcvf jpg.tar.Z *.jpg
RAR
RAR是商业软件,需要编译安装.
源码下载: https://www.rarlab.com/download.htm
Centos7
的glibc版本为2.17
只能安装rar5.5
版本
# 下载RAR源码包
wget -P /usr/local/src -c https://www.rarlab.com/rar/rarlinux-x64-5.5.0.tar.gz
cd /usr/local/src/
# 解压源码
tar xvf rarlinux-x64-5.5.0.tar.gz
cd /usr/local/src/rar
# 编译安装
make && make install
# 查看rar命令是否可用
which rar
# 查看rar版本
rar -?
rar压缩
# 将a目录下的所有jpg后缀的文件打包到jpg.rar
## -a 添加到压缩文件中
rar a 压缩包名称.rar *.jpg
rar解压
参考链接: https://blog.csdn.net/iot_song/article/details/80169662
安装unrar解压工具
Linux
安装rar
# Debian安装unrar
apt install unrar -y
# RHEL安装unrar
yum install -y unrar
macOS
安装rar
# macOS安装rar
brew install rar
# 消除app的隔离属性,不然无法运行
sudo xattr -r -d com.apple.quarantine /opt/homebrew/bin/unrar
rar解压示例
# 用unrar命令解压rar后缀的文件
## e 解压文件到当前目录
unrar e test.rar
## x 解压到名为test的目录
unrar x test.rar
## l 查看rar中的文件
unrar l test.rar
## v 显示详细
unrar v test.rar
## t 测试是否可以成功解压
unrar t test.rar
ZIP压缩和解压
# Ubuntu安装unzip
apt install -y unzip
# Centos安装zip和unzip
yum install -y zip unzip
# macOS安装unzip
brew install unzip
zip压缩
# 将当前目录下的所有jpg文件打包到jpg.zip
## zip 压缩后的文件名.zip 要压缩的文件
zip jpg.zip *.jpg
# 压缩指定文件
zip /opt/test.zip test_file
zip递归压缩(子目录也一起压缩)
zip压缩目录
的时候,默认不会把子目录
中的文件放进压缩包
# -r 递归压缩
zip -r test.zip 目录名
删除zip压缩包内的指定文件
删除jar包内的指定文件
# zip -d 要修改的jar包 jar包内要被删除的文件路径
zip -d test.jar BOOT-INF/lib/test-ui-2.8.0.jar
向zip压缩包中添加文件
# -u 向zip压缩包中添加文件
zip -u 压缩包名.zip 要添加的文件
# 查zip压缩包内的文件内容
unzip -l 压缩包名.zip
在zip压缩包中创建目录
# 在压缩包里会创建/var/目录
zip -u test.zip /var/nihao.txt
zip解压
https://wangchujiang.com/linux-command/c/unzip.html
https://blog.csdn.net/qq_35399846/article/details/70168002
https://blog.csdn.net/IOT_SONG/article/details/80169662
# 解压zip压缩包
unzip test.zip
tar
也可以解压zip
# 实测也可以通过tar解压zip
## -x 解压缩
## v 显示解压进度
## f 指定操作文件
tar xvf test.zip
解压zip到指定目录
# 解压zip到指定目录
## -d 解压到指定路径
unzip ko.zip -d /opt
查看解压包中有哪些文件
# 只看一下zip压缩包中包含哪些文件,不进行解压缩
## -l:显示压缩文件内所包含的文件
unzip -l test.zip
# 只看一下zip压缩包中包含哪些文件,不进行解压缩
## -Z:unzip-Z等于执行zipinfo指令。
unzip -Z test.zip
## -v 查看显示的文件列表还包含压缩比率
unzip -v test.zip
检查文件是否损坏
# -t 检查zip文件是否损坏
unzip -t test.zip
只解压指定文件
# 只解压指定文件
## "指定要解压的文件"
unzip test.zip "test.jpg"
解压不覆盖已有文件
# -n 解压时不覆盖已经存在的文件
unzip -n test.zip
# 解压到指定目录并不覆盖已存在的文件
## -n 解压时不覆盖已经存在的文件
## -d 解压到指定目录
unzip -n -d /temp test.zip
解压并覆盖
## -o:不必先询问用户,unzip执行后覆盖原有的文件
## -d 解压到指定目录
unzip -o test.zip -d /tmp/
7z解压
参考: https://blog.csdn.net/rookie23rook/article/details/112508720
a
: 将文件添加到存档b
: 基准d
: 从存档中删除文件e
: 从存档中提取文件(不使用目录名)h
: 计算文件的哈希值i
: 显示有关支持格式的信息l
: 列出存档内容rn
: 重命名存档中的文件t
: 测试档案的完整性u
: 更新文件以存档x
: 提取具有完整路径的文件
# Ubuntu
apt intall p7zip-full p7zip-rar -y
# Centos
yum -y install p7zip
# 解压命令
7za x OneAPM.7z
查看7z压缩包中的文件列表
# l 列出文件内容
7za l archive.7z
解压7z包到指定目录
https://www.jianshu.com/p/8f63182277c3
# 解压到指定目录
## x : 提取具有完整路径的文件
## -o后面没有空格
7za x -o指定的目录 file.7z
解压指定7z文件
参考: https://blog.csdn.net/lionzl/article/details/8655815
# 解压所有以2022.png结尾的文件到/tmp/目录
## x : 提取具有完整路径的文件
## -o没有空格,解压到指定路径
## -r[-|0] :递归子目录
### 7za x 压缩包.7z -o指定的解压路径 *文件名或类型 -r
7za x 压缩包.7z -o./tmp/ *2022.png -r
解压7z文件不包含目录
x
参数会创建一个与压缩包同名的目录;
e
参数不会创建与压缩包同名的目录
# 解压指定文件:
## e :从存档中提取文件(不使用目录名)
7za e archive.7z spec_file
7z解压加密文件
# 解压加密文件
## x : 提取具有完整路径的文件
## -p{Password} : 指定解压密码
7za x -p密码 filename.7z
7z压缩并加密
# 压缩并加密
## a : 将文件添加到存档
7za a filename.7z sourcefilepath
# 向压缩包中添加文件
## a : 将文件添加到存档
7za a archive.7z 文件1.txt 文件2.txt
## -r 增加当前文件夹及其子文件夹下的所有的txt文件到Files.7z中
7z a Files.7z *.txt -r
lz4压缩工具
https://www.cnblogs.com/kevingrace/p/10271581.html
参数
-1: 快速压缩(默认)
-9: 高压缩
-d: 解压缩(默认为.lz4扩展名)
-z: 强制压缩
-f: 覆盖输出而不提示
-k: 保留源文件(默认)
–rm: 成功地解除/压缩后删除源文件
-h/-h: 显示帮助/长帮助和退出
高级参数
-v: 显示版本号并退出
-v: 详细模式
-q: 取消警告;指定两次也可以取消错误
-c: 强制写入标准输出,即使它是控制台
-t: 测试压缩文件完整性
-m: 多个输入文件(表示自动输出文件名)
-r: 在目录上递归操作(也设置为-m)
-l: 使用旧格式压缩(Linux内核压缩)
安装lz4
# 安装lz4压缩支持
dnf install -y lz4 lz4-devel
# 查看lz4是否安装
which lz4
压缩为lz4
# 压缩为lz4
## -1: 快速压缩(默认)
lz4 test
lz4 -1 test
# 高压缩
## -9: 高压缩
lz4 -9 test
## 压缩成功后,将源文件删除 (--rm参数)
lz4 --rm test
## -z: 强制压缩
解压lz4
# 解压lz4文件
## -d: 解压缩
lz4 -d xx-md5-xxxxyyyy.iso.lz4
Linux文件压缩和解压–总结
*.tar.*
类型压缩包,统一用 tar -xvf
解压
*.gz
用 gzip -d
或者gunzip
解压
*.bz2
用 bzip2 -d
或者用bunzip2
解压
*.Z
用 uncompress
解压
*.rar
用 unrar
解压
*.zip
用 unzip
解压