Linux常用命令--文件与目录的压缩

摘要

  • 文件与目录的压缩与解压缩等相关命令

  • 本文基于CentOS8(x86_64)

压缩和解压缩命令

1.格式:.gz 只能压缩文件

1
2
3
4
5
6
7
8
9
10
11
12
# 压缩
gzip file : 压缩 file.gz
gzip *.sh : 每个文件生成独立的.gz

# 解压缩
gunzip file.gz : 解压缩

gunzip *.gz

# 查看压缩文件内容
vim file.gz # 可以直接编辑
less file.gz

2.格式:.tar 可以压缩文件和目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 压缩
tar -cvf file.tar file : 压缩
-c:产生.tar文件
-v:显示详细信息
-f:指定压缩后的文件名

# 解压缩
tar -xvf file.tar : 解压缩
-x:解压.tar文件
-v:显示详细信息
-f:指定要解压的文件名

tar -xvf file.tar -C todir
-C:解压到指定目录

# 将 .tar文件转成 .tar.gz文件
gzip file.tar

# 不解包,查看包中文件列表
tar -tf file.tar : 不解包,查看包中文件列表
vim file.tar
less file.tar

# 将文件加入到压缩包中
tar -rf file.tar newfile1 newfile2

# 更新压缩包中已经存在的文件或者追加新的文件
tar -uf file.tar oldfile1 newfile1

# 将文件从压缩包中删除
tar --delete file -f file.tar

# 合并两个压缩包,将file2.tar中的内容合并到file1.tar中
tar -Af file1.tar file2.tar

# 比较系统文件与压缩包中的同名文件是否有差异
tar -df update.tar update.txt
update.txt: 修改时间不同
update.txt: 大小不同

3.格式:.tar.gz 可以压缩文件和目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 压缩
tar -zcvf file.tar.gz file/dir
tar -zcvf file_$(date +%F).tar.gz file
tar -zcvf file.tar.gz dir1 dir2 dir3 : 压缩多个目录
-c:产生.tar文件
-v:显示详细信息
-f:指定压缩后的文件名
-z:打包同时压缩为.gz

# 解压缩
tar -zxvf file.tar.gz 
-x:解压.tar文件
-v:显示详细信息
-f:指定要解压的文件名
-z:解压缩.gz

tar -zxvf file.tar.gz -C todir
-C:解压到指定目录

# 将 .tar.gz文件转成 .tar文件
gunzip file.tar.gz

# 不解包,查看包中文件列表
tar -ztf file.tar.gz : 不解包,查看包中文件列表
vim file.tar.gz
less file.tar.gz

# 将文件加入到压缩包中
# tar.gz文件不支持直接追加文件,需要先解压到tar,再追加,之后再打包为tar.gz,更新\删除\合并同理
gunzip file.tar.gz
tar -rf file.tar newfile1 newfile2
gzip file.tar

# 比较系统文件与压缩包中的同名文件是否有差异
tar -df update.tar.gz update.txt
update.txt: 修改时间不同
update.txt: 大小不同

4.格式:.zip 可以压缩文件和目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 压缩
zip file.zip file : 压缩文件
zip -r dir.zip dir : 压缩目录

# 解压缩
unzip file.zip : 解压缩
unzip -o file.zip : 解压后如果文件已经存在,则覆盖
unzip -n file.zip : 解压后如果文件已经存在,则不覆盖
unzip file.zip -d newDir : 解压缩到指定目录

# 不解压查看压缩包内文件目录结构
zip -sf file.zip : 不解压查看压缩包内文件目录结构
unzip -l file.zip : 不解压查看压缩包内文件目录结构
zipinfo file.zip : 不解压查看压缩包内文件目录结构
vim file.zip
less file.zip

# 不解压查看压缩包内文件内容
unzip -c file.zip : 不解压查看压缩包内所有文件内容
unzip -c file.zip file : 不解压查看压缩包内的file文件内容

# 新增或更新压缩包中的文件
zip -u file.zip test.sh

# 从压缩包中删除文件
zip -d file.zip test.sh

5.格式:.bz2 只能压缩文件

1
2
3
4
5
6
7
8
9
10
11
# 压缩
bzip2 -k file : 压缩 file.bz2
-k:压缩后保留原文件

# 解压缩
bunzip2 -k file.bz2 : 解压缩
-k:解压后保留原文件

# 不解压查看压缩包内文件内容
vim file.bz2 # 可以直接编辑
less file.bz2

6.格式:.rar

1
2
3
4
5
# 下载与安装,这里要求gcc的版本至少为5.2
wget --no-check-certificate https://www.rarlab.com/rar/rarlinux-x64-621.tar.gz
tar -zxf rarlinux-x64-621.tar.gz
cd rar/
make
  • 使用示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 压缩: rar a 压缩后的文件名称(不带后缀rar) 要压缩的文件
rar a sql *.sql

# 查看压缩文件内的文件列表
rar l sql.rar

# 从压缩文件内删除指定的文件,如这里删除1.sql
rar d sql.rar 1.sql

# 追加或更新文件
rar u sql.rar 1.sql

# 打印压缩文件内容
rar p sql.rar

# 解压,并保持原来压缩之前源文件的目录组织结构。
rar x sql.rar
unrar x sql.rar

# 解压到当前目录,压缩文件中原包含的目录全没有
rar e sql.rar
unrar e sql.rar