tar命令可以为 Linux 的文件和目录创建档案。利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。
首先要弄清两个概念:
为什么要区分这两个概念呢?这源于 Linux 中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。
Linux 下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进行压缩。
命令格式
tar [-cxtzjvfpPN] File or directory
命令功能
tar本身不具有压缩、解压功能,他是通过调用 gzip 或 zip 实现的)。命令参数
-A:新增压缩文件到已存在的压缩;-B:设置区块大小;-c:建立新的压缩文件;-d:记录文件的差别;-r:添加文件到已经压缩的文件;-u:添加改变了和现有的文件到已经存在的压缩文件;-x:解开一个压缩文件;-t:显示压缩文件的内容;-z:支持 gzip 解压文件;-j:支持 bzip2 解压文件;-Z:支持 compress 解压文件;-v:显示详细 tar 执行过程;-l:文件系统边界设置;-k:保留原有文件不覆盖;-m:保留文件不被覆盖;-W:确认压缩文件的正确性;-f:指定压缩文件;-p:使用原文件的原来属性(属性不会依据使用者而变);-P:可以使用绝对路径来压缩;-b:设置区块数目;-C:切换到指定目录;-N:打包比指定日期新的文件或文件夹;--help:显示帮助信息;--version:显示版本信息;--exclude:压缩过程中不打包指定文件或文件夹;-c | -x | -t 仅能存在一个;-f之后要立即接档案名,例如使用tar -zcvfP tfile sfile就是错误的写法,正确的写法是tar -zcvPf tfile sfile;使用范例
tar -cvf log.tar test.txt # 仅打包,不压缩
tar -zcvf log.tar.gz test.txt # 打包后,以 gzip 压缩
tar -jcvf log.tar.bz2 test.txt # 打包后,以 bzip2 压缩
# 在参数-f之后的文件档名是自己取的,我们习惯上都用.tar来作为辨识;如果加-z参数,则以.tar.gz或.tgz来代表gzip压缩过的tar包; 如果加-j参数,则以.tar.bz2来作为tar包名
tar -zcvf log.tar.gz 1.txt test/ # 多个文件或文件夹之间用空格分割
tar -zcvf file.tar.gz *.jpg
tar -xvf log.tar
tar -zxvf log.tar.gz
tar -jxvf log.tar.bz2
tar -zxvf log.tar.gz -C /data
[root@localhost test]# tar -ztvf log.tar.gz
-rw-r--r-- root/root 0 2022-07-31 01:06 test.txt
[root@localhost test]# tar -ztvf 1.tar.gz
drwxr-xr-x root/root 0 2022-07-31 01:19 test/
-rw-r--r-- root/root 0 2022-07-31 01:17 1.txt
[root@localhost test]# tar -zxvf 1.tar.gz 1.txt
1.txt
# 可以透过tar -ztvf来查阅tar包内的文件名称,如果单只要一个文件,就可以透过这个方式来解压部分文件
tar -zcvpf log.tar.gz 1.txt
# 在想要保留原本文件的属性时,-p很重要
tar -N "2022/07/30" -zcvf 1.tar.gz data/
tar --exclude data/1.txt -zcvf log.tar.gz data/* /etc
【1】https://www.cnblogs.com/sui776265233/p/10185402.html
【2】https://www.jianshu.com/p/e4249f0e76e7
【3】https://blog.csdn.net/zjwlgr/article/details/122543552
【4】https://www.bilibili.com/read/cv14025026