linux-doc-压缩命令

tar

介绍

用于给linux的文件和目录创建档案。利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。

打包和压缩
打包是指将一大堆文件或目录变成一个总的文件;
压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
要区分2者这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(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
# 语法
tar(选项)(参数)

# 常用用法
tar [-j|-z] [cv] [-f 建立的档案名] filename... # 打包与压缩
tar [-j|-z] [tv] [-f 建立的档案名] # 查看档案
tar [-j|-z] [xv] [-f 建立的档案名] [-C 目录] # 解压缩

# 选项
-c:建立打包档案,可搭配-v来查看过程中背打包的档名
-t:查看打包档案的内容含有哪些档名,重点在查看档名
-x:解打包或压缩的功能,可以搭配-C在特定的目录解开
-j:透过bzip2的支持进行压缩/解压缩:此时档名最好为.tar.bz2
-z:透过gzip的支持进行压缩/解压缩:此时档名最好为.tar.gz
-v:在压缩/解压缩的过程中,将正在处理的文件名显示出来
-f filename:-f后面要立刻接要处理的档名,建议-f单独写一个选项
-C 目录:这个选项用在解压缩,若要在特定目录解压缩,可以使用这选项
-p:保留备份数据的原本权限与属性,常用于备份(-c)重要配置文件
-P:保留绝对路径,亦即允许备份数据中含有根目录存在之意
-r:添加文件到已经压缩的文件;
-u:添加改变了和现有的文件到已经存在的压缩文件;
-l:文件系统边界设置;
-k:保留原有文件不覆盖;
-m:保留文件不被覆盖;
-w:确认压缩文件的正确性;
-N, --newer=DATE-OR-FILE, --after-date=DATE-OR-FILE:只将较指定日期更新的文件保存到备份文件里;
--mtime=DATE-OR-FILE:打包时添加文件改动时间的规则
--newer-mtime=DATE:比较数据更改时的日期和时间
--exclude=<范本样式>:排除符合范本样式的文件。

# 参数
文件或目录:指定要打包的文件或目录列表。

使用参考

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# 仅打包,不压缩 log文件
tar -cvf log.tar log1 log2

# 将目录里所有jpg文件打包成tar.jpg
tar –cvf jpg.tar *.jpg

# 打包log文件后,以 gzip 压缩
tar -zcvf log.tar.gz log1 log2

# 查询gzip压缩包log里面的内容
tar -ztvf log.tar.gz

# 将gzip压缩包解压到log目录
tar -zxvf log.tar.gz -C log

# 将log1从gzip压缩包里面提取出来
tar -zxvf log.tar.gz log1

# 打包当前目录时间在2019-5-28后变动过的日志文件
tar --newer-mtime "2019-5-28" -zcvf log.tar.gz ./*

# 打包当前目录出了log1之外的所有文件
tar --exclude log1 -zcvf log.tar.gz ./*

# 将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar –czf jpg.tar.gz *.jpg

# 解压tar.gz
tar -xzvf file.tar.gz

# 打包log文件后,以 bzip2 压缩
tar -jcvf log.tar.bz2 log1 log2

# 将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar –cjf jpg.tar.bz2 *.jpg

# 查询bzip2压缩包log里面的内容
tar -jtvf log.tar.bz2

# 解压 tar.bz2
tar -xjvf file.tar.bz2

# 将log1从bzip2压缩包里面提取出来
tar -jxvf log.tar.bz2 log1

# 将bzip2压缩包解压到log目录
tar -jxvf log.tar.bz2 -C log


# 将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
tar –cZf jpg.tar.Z *.jpg

# 解压tar.Z
tar –xZvf file.tar.Z

zip

安装

1
yum install -y unzip zip

使用参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 检测zip是否完整
unzip -t xxx.zip

# 解压 mydata.zip 到 mydatabak
unzip mydata.zip -d mydatabak

# 将文件夹abc 和 123.txt压缩成abc123.zip
zip -r abc123.zip abc 123.txt

# 将当前目录下的所有 jpg 文件压缩打包
zip jpg.zip *.jpg

# 分卷压缩文件
# zip -s <卷大小> <输出文件名> <输入文件>
zip -s 1G bigfile bigfile.txt

# 分卷压缩目录
# zip -r -s <卷大小> <输出文件名> <输入文件夹>
zip -r -s 1G myfolder myfolder

rar

使用参考

1
2
3
4
5
# 将当前目录下的所有 jpg 文件压缩打包
rar a jpg.rar *.jpg

# 解压rar
unrar e file.rar