每天一条Linux命令(18) tar (打包备份)

编程入门 行业动态 更新时间:2024-10-24 08:29:05


在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]# ls10.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]# ls10.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.pydrwxr-xr-x root/root         0 2020-08-10 14:13 ./bear/ [root@master test02]#  上述结果可以看到 排除了 hahaha目录

经验:

若需要打包的目录为相对路径,则--exclude后只能接相对路径。·若需要打包的目录为绝对路径,则--exclude后既能接绝对路径也能接相对路径。·为方便起见,--exclude的后接路径和打包路径应保持形式一致,要么都是相对路径,要么都是绝对路径。

更多推荐

备份,命令,Linux,tar

本文发布于:2023-05-26 11:36:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/265255.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:备份   命令   Linux   tar

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!