在Linux系统中,命令tar用于将多个文件打包在一起,也可以实现解压被打包的文件,对于多个文件的打包与解压均适用。
打包与压缩的区别:
打包是指将多个文件或目录汇总为一个文件;
压缩则是指将多个文件通过特定的算法变成一个小文件。
语法:
tar [选项] [文件]
参数说明:
-z 通过gzip压缩或解压
-c 创建新的tar包
-v 显示详细的tar命令执行过程
-f 指定压缩文件的名称
-t 不解压查看tar包的内容
-p 保持文件的原有属性
-P(大写) 以绝对路径打包,危险参数
-j 通bzip2 命令压缩或解压
-x 解开tar包
-C 指定解压的目录路径
-exclude=PATTERN 打包是排除不需要处理的文件或目录
-X 文件名 从指定文件读取不需要处理的文件或目录列表
-N 日期 仅打包比指定日期新的文件,可用于增量打包备份
-h 打包软链接文件指向的真实源文件
--hard-dereference 打包硬链接文件
【注】:tar命令有些特殊,对于CentOS来说 -z 参数和 z参数(不带杠)效果是一样的
案例:
将当前目录下的所有文件打包
[root@master test02]# ls
10.py 1.py 2.py 3.py 4.py 5.py 6.py 7.py 8.py 9.py
[root@master test02]# tar -zcvf test.tar.gz ./*
./10.py
./1.py
./2.py
./3.py
./4.py
./5.py
./6.py
./7.py
./8.py
./9.py
[root@master test02]# ls # 可以发现当前目录下多了个 test.tar.gz包
10.py 1.py 2.py 3.py 4.py 5.py 6.py 7.py 8.py 9.py test.tar.gz
[root@master test02]#
-t参数不解压查看tar包的内容 (注意参数变化)
[root@master test02]# tar -ztvf test.tar.gz
-rw-r--r-- root/root 172 2020-08-10 14:02 ./10.py
-rw-r--r-- root/root 0 2020-08-10 14:01 ./1.py
-rw-r--r-- root/root 0 2020-08-10 14:01 ./2.py
-rw-r--r-- root/root 0 2020-08-10 14:01 ./3.py
-rw-r--r-- root/root 0 2020-08-10 14:01 ./4.py
-rw-r--r-- root/root 0 2020-08-10 14:01 ./5.py
-rw-r--r-- root/root 0 2020-08-10 14:01 ./6.py
-rw-r--r-- root/root 0 2020-08-10 14:01 ./7.py
-rw-r--r-- root/root 0 2020-08-10 14:01 ./8.py
-rw-r--r-- root/root 0 2020-08-10 14:01 ./9.py
[root@master test02]#
-x参数 解开压缩包
[root@master test02]# ls
test.tar.gz
[root@master test02]# tar -zxvf test.tar.gz -C ../ # 解压到上级目录下
./10.py
./1.py
./2.py
./3.py
./4.py
./5.py
./6.py
./7.py
./8.py
./9.py
[root@master test02]# ls ../ # 查看上级目录列表
10.py 1.py 2.py 3.py 4.py 5.py 6.py 7.py 8.py 9.py datapro test test01 test02
[root@master test02]#
排除某个文件打包
[root@master test02]# tree # 先查看目录结构
.
├── 10.py
├── 1.py
├── 2.py
├── 3.py
├── 4.py
├── 5.py
├── 6.py
├── 7.py
├── 8.py
├── 9.py
└── bear
└── hahaha
2 directories, 10 files
[root@master test02]# ls
10.py 1.py 2.py 3.py 4.py 5.py 6.py 7.py 8.py 9.py bear
[root@master test02]# tar -zcvf test.tar.gz ./* --exclude=./bear/hahaha
./10.py # --exclude后面跟的是要排除的文件
./1.py
./2.py
./3.py
./4.py
./5.py
./6.py
./7.py
./8.py
./9.py
./bear/
[root@master test02]# tar -ztvf test.tar.gz 不解压查看打包内容
-rw-r--r-- root/root 172 2020-08-10 14:02 ./10.py
-rw-r--r-- root/root 0 2020-08-10 14:01 ./1.py
-rw-r--r-- root/root 0 2020-08-10 14:01 ./2.py
-rw-r--r-- root/root 0 2020-08-10 14:01 ./3.py
-rw-r--r-- root/root 0 2020-08-10 14:01 ./4.py
-rw-r--r-- root/root 0 2020-08-10 14:01 ./5.py
-rw-r--r-- root/root 0 2020-08-10 14:01 ./6.py
-rw-r--r-- root/root 0 2020-08-10 14:01 ./7.py
-rw-r--r-- root/root 0 2020-08-10 14:01 ./8.py
-rw-r--r-- root/root 0 2020-08-10 14:01 ./9.py
drwxr-xr-x root/root 0 2020-08-10 14:13 ./bear/
[root@master test02]# 上述结果可以看到 排除了 hahaha目录
经验:
若需要打包的目录为相对路径,则--exclude后只能接相对路径。·若需要打包的目录为绝对路径,则--exclude后既能接绝对路径也能接相对路径。·为方便起见,--exclude的后接路径和打包路径应保持形式一致,要么都是相对路径,要么都是绝对路径。
更多推荐
备份,命令,Linux,tar
发布评论