Linux中的tar命令是文件管理中最重要的命令之一。它是Tape Archive的缩写,用于创建和解压缩归档文件。存档文件是一种压缩文件,其中包含一个或多个捆绑在一起的文件,以便更易于访问存储和可移植性。
tar只负责打包,打包是指将一大堆文件或目录捆绑成一个文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件,需要用到zip、
gzip、bzip2、xz等。
常用选项
-
-c
:创建打包文件,会递归目录中的每个文件,如果想改变此行为,可以指定 --no-recursion -
-x
:提取打包文件 -
-f
:指定打包后的文件名 -
-v
:在打包时打印详细debug信息 -
-t
:列出在打包文件中的所有文件 -
-u
:打包文件并添加到存在的打包文件中 -
-r
:更新打包文件中的文件或目录 -
-z
:打包文件时使用 gzip 进行压缩 -
-j
:打包文件时使用 bzip2 进行压缩 -
-J
:打包文件时使用 xz 进行压缩 -
W
:验证打包文件是否被损坏 -
-A
:追加打包文件到另一个打包文件 -
-d
:比较打包文件与源文件,如果没有提供源文件参数,则默认使用当前目录 -
--delete
:删除打包文件中的成员 -
--wildcards
:搜索打包文件中的文件,通过通配符来匹配 -
-?, --help
:打印帮助信息 -
--usage
:打印可用的选项 -
--version
:打印版本信息
命令示例
-
只打包不压缩
tar -cvf abc.tar abc
-
创建一个打包并压缩的文件
tar -czvf abc.tar.gz a.txt b.txt c.txt
解释:c:打包、z:使用gzip压缩、v:打印debug信息、f:指定打包的文件名
-
把文件夹进行打包并压缩
tar -czvf dir.tar.gz dir
-
列出压缩文件的内容
tar -tf abc.tar.gz
-
提取打包的文件
tar -xvf abc.tar
-
提取打包的文件到指定的目录
tar -xvf abc.tar -C /tmp/files
-
提取打包文件中指定的文件
tar -xvf abc.tar file1.txt file2.txt
-
添加/追加文件到打包文件
tar -rvf abc.tar file3.txt
-
删除打包文件中指定的成员文件
tar --delete -f abc.tar file3.txt
-
指定 gzip 算法进行压缩
tar -zcvf abc.tar.gz abc
-
解压缩 gzip 算法的压缩包
tar -zxvf abc.tar.gz
-
指定 bzip2 算法进行压缩
tar -jcvf abc.tar.bz2 abc
-
解压缩 bzip2 算法的压缩包
tar -jxvf abc.tar.bz2
-
指定 xz 算法进行压缩
tar -Jcvf abc.tar.xz abc
-
解压缩 xz 算法的压缩包
tar -Jxvf abc.tar.xz
-
通过通配符提取匹配到的文件
tar -xvf abc.tar --wildcards '*.txt'
-
验证压缩包是否完整或被损坏
tar -W abc.tar
-
创建压缩包时,指定排除的文件
tar -zcvf abc.tar.gz abc --exclude='file1.txt'
-
创建压缩包,指定排除的目录
tar -zcvf abc.tar.gz abc --exclude='/etc/*'
-
通过 grep 查找压缩包中匹配的文件
tar -tf abc.tar.gz | grep file1.txt
-
通过wildcards查找压缩包中的多个文件
tar -tf abc.tar.gz --wildcards '*.png'
-
合并打包文件
tar -Af abc.tar def.tar
-
比较打包文件和源文件
tar -df abc.tar abc
-
提取文件并保留源文件权限
tar xf abc.tar.gz --preserve-permissions
-
提取文件并把标准输出写入到外部程序
tar xf abc.tar --to-command='mkdir $TAR_FILENAME'
提取abc.tar,--to-command内部通过通道把标准输出传给指定的命令
此处mkdir会创建名字为abc的文件夹,文件夹里面有提取的每个文件。
-
检查打包或压缩包文件的大小
tar -czvf abc.tar.gz | wc -c