Linux压缩与解压
RAR
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压缩
# 将a目录下的所有jpg后缀的文件打包到jpg.rar
rar a jpg.rar *.jpg
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解压
# 实测也可以通过tar解压zip
## -x 解压缩
## v 显示解压进度
## f 指定操作文件
tar xvf test.zip
查看解压包中有哪些文件
# 只看一下zip压缩包中包含哪些文件,不进行解压缩
## -l:显示压缩文件内所包含的文件
unzip -l test.zip
# 只看一下zip压缩包中包含哪些文件,不进行解压缩
## -Z:unzip-Z等于执行zipinfo指令。
unzip -Z test.zip
# 查看显示的文件列表还包含压缩比率
unzip -v test.zip
检查文件是否损坏
# -t 检查zip文件是否损坏
unzip -t test.zip
解压zip到指定目录
# 把文件解压到当前目录下
unzip test.zip
# 解压
unzip liangshuang.zip
## -d 解压到指定路径
unzip ko.zip -d /opt
只解压指定文件
# 只解压指定文件
## "指定要解压的文件"
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/
tar打包工具
tar常用参数:
-z 表示使用gzip压缩
-j 表示使用bzip2压缩
-c 表示打包文件
-v 表示显示详细信息
-f 指定文件名称,必须放到所有选项后面
-x 表示解压缩
-C 解压到指定目录
安装tar
# Centos8最小化安装的系统没有tar包
yum install tar -y
tar只打包不压缩
# 不压缩打包
# -cvf 表示只打包不使用压缩
## -c tar的打包参数
## -v 显示详情,进度
## -f 指定文件名称,必须放到所有选项后面
tar -cvf FileName.tar DirName
tar.gz压缩
压缩打包命令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
tar.gz压缩过程
## tar.gz压缩原理
# 将目录里所有jpg文件打包成jpg.tar
tar -cvf jpg.tar *.jpg
# gzip将jpg.tar压缩后,文件变成了jpg.tar.gz
gzip jpg.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.bz2压缩
# centos安装bzip2
yum install bzip2 -y
#将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar -jcvf jpg.tar.bz2 *.jpg
tar.z压缩
#将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
tar -Zcvf jpg.tar.Z *.jpg
## tra.xz压缩
安装XZ压缩工具``
```bash
# centos自带xz
# ubuntu安装XZ压缩工具
apt-get install xz-utils
# tar.xz压缩
tar Jcvf 压缩后的文件.tra.xz 要压缩的文件
tar解压
tar可以解压tar.gz,tar.bz2,tar.xz,tar.z等格式
.tar.*类型压缩包,统一用tar -xvf 解压
解压tar -vxf 文件名.tar.gz
v 代表解压的时候打印出所有的文件
x 代表解压缩
f 指定文件,必须是放在最后
k 保留原有文件不覆盖
-C 解压到指定目录
tar -vxf 文件名.tar.gz -C 指定目录
# 解压tar包
tar -xvf file.tar
# 解压tar.gz:
tar xvf 文件名.tar.gz
tar xvf FileName.tar.gz
# -C 解压到指定目录
tar -xvf bbs.tar.gz -C /zzz/bbs
# -k 保留原有文件不覆盖
# -C 解压到指定目录
tar -xvfk bbs.tar.gz -C /zzz/bbs
gz解压
# -d 解压后会删除原有的.gz文件
gzip -d file.gz
# -k 解压后保留原gz文件
gzip -dk file.gz
7z解压
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
解压到指定目录
# 解压到指定目录
## x : 提取具有完整路径的文件
## -o后面没有空格
7za x -o指定的目录 file.7z
解压指定文件
# 解压所有以2022.png结尾的文件到/tmp/目录
## x : 提取具有完整路径的文件
## -o没有空格,解压到指定路径
## -r[-|0] :递归子目录
### 7za x 压缩包.7z -o指定的解压路径 *文件名或类型 -r
7za x 压缩包.7z -o./tmp/ *2022.png -r
解压文件不包含目录
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
# 增加当前文件夹及其子文件夹下的所有的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
总结
*.tar.*类型压缩包,统一用 tar -xvf 解压
*.gz 用 gzip -d或者gunzip 解压
*.bz2 用 bzip2 -d或者用bunzip2 解压
*.Z 用 uncompress 解压
*.rar 用 unrar 解压
*.zip 用 unzip 解压