序言
tar命令拿来归档多个文件或目录到单个归档文件中,但是归档文件可以进一步使用gzip或则bzip2等技术进行压缩。
命令格式
tar[OPTION…][FILE]…
命令功能
Tar(TapeARchive,磁带归档的简写,最初设计用于将文件打包到磁带上,现今大都使用它来实现备份某个分区或则个别重要的目录)是类Unix系统中使用最广泛的命令,用于归档多个文件或目录到单个归档文件中,但是归档文件可以进一步使用gzip或则bzip2等技术进行压缩,能够保留其文件权限。换言之,tar命令也可以用于备份:先是归档多个文件和目录到一个单独的tar文件或归档文件linux tar压缩命令,之后在须要之时将tar文件中的文件和目录释放下来。
命令选项
选项
涵义
-A或–catenate
新增文件到以存在的备份文件
-B
设置区块大小
-c或–create
完善新的备份文件
-C
这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项
-d
记录文件的差异
-x或–extract或–get
从备份文件中还原文件
-t或–list
列举备份文件的内容
-z或–gzip或–ungzip
通过gzip指令处理备份文件
-Z或–compress或–uncompress
通过compress指令处理备份文件
-f或–file=
指定备份文件
-v或–verbose
显示指令执行过程
-r
添加文件到早已压缩的文件
-u
添加改变了和现有的文件到早已存在的压缩文件
-j
支持bzip2解压文件
-v
显示操作过程
-l
文件系统边界设置
-k
保留原有文件不覆盖
-m
保留文件不被覆盖
-w
确认压缩文件的正确性
-p或–same-permissions
用原先的文件权限还原文件
-P或–absolute-names
文件名使用绝对名称,不移除文件名称前的“/”号
-N
或–newer=只将较指定日期更新的文件保存到备份文件里
–exclude=
排除符合范本式样的文件
哪些是“文件压缩”?
我们晓得,在计算机系统中文件的内容是信息,信息实际上就是一个由值0和值1组成的位(又称为比特)序列,8个位被组织成一组,称为字节。通常来说red hat linux下载,一个字节的8位是没有被全部借助上去的,那些没有被借助的位抢占了一个文件的大部份空间,而“文件压缩”就是借助复杂的计算方法linux tar压缩命令,将那些没有借助的空间腾下来,以让文件占用的空间变小。
简单来说,「压缩」就是把文件中没有完全塞满的空间塞满。压缩过的文件不能直接被操作系统所使用,因而,「解压缩」就是指把文件「还原」为未压缩之前的模样。压缩前与压缩后的文件所占用的c盘空间大小之比就是「压缩比」。常见的压缩格式
Linux中常见的压缩格式有:
*.Z:compress程序压缩的文件。*.gz:gzip程序压缩的文件。*.bz2:bzip2程序压缩的文件。*.tar:tar程序打包的数据,没有被压缩过。*.tar.gz(缩写为.tgz):tar程序打包的数据,经过gzip的压缩。*.tar.bz2(缩写为.tbz2):tar程序打包的数据,经过bzip2的压缩。
里面的压缩格式中,主要是gzip和bzip2两个压缩命令,它们是GNU计划的中的一部份,在此之前是compress命令,但它早已不再流行了。bzip2比gzip的压缩比挺好,不过bzip2一般只能针对一个文件来压缩和解压缩。假如是这样的话,压缩整个开发环境目录就太冗长了。
因而tar命令就出现了,tar不是一个“压缩命令”,而是一个“打包命令”。也就是说,tar可以把好多文件「打包」成一个文件,甚至连目录也可以进行打包。一开始tar命令的确是不支持压缩的功能linux定时器,后来GNU计划为了提供给使用者更便捷而且更加大大的压缩与打包功能,就把整个tar与压缩的功能结合在一起了。
仅仅打包上去的tar文件也称tarfile文件,经过压缩的tar文件称作tarball文件。
全能的tar命令
概要
tar可以将多个目录或文件打成一个大文件,同时支持gzip/bzip2
归档:tar{-c}[option…]-fdestinationsource
追加归档:tar{-r|-u}-fsource[option…]destination
解压:tar{-t|-x}-fsource[option…]-Cdestination
最简单的使用tar只要记住下边的形式:
filename.tar.bz2既然tar不是一个压缩命令,是个打包命令,这么是怎样做到打包并压缩的呢?我们先来看一下tar命令的常用参数:
模式参数
tar分为三种模式,-c,-r,-u三个一类,为归档/压缩模式,在该模式下,tar会递归遍历指定目录下的所有目录和文件,并创建归档文件。-x表示为去归档/解压模式,-t表示为复印列表模式。
通用参数
打包并创建归档文件
示例:打包一个目录。
描述:将/home/test这个目录打包,生成文件名为command-18-06-02.tar的归档文件,保存在当前目录下。
# tar -cv -f command-18-06-02.tar /home/test
/home/test/.bash_logout
/home/test/.bashrc
/home/test/apache-tomcat-9.0.7.tar.gz
/home/test/.bash_profile
/home/test/nginx-1.10.1.tar.gz
复制
-c(–create的缩写)参数,这表示为指定的文件或则目录创建新的归档文件。使用-f指定读取或则写入的归档文件,可以用-表示标准输入或则标准输出,-f可以与其他参数连上去写,必须保证f参数前面跟的是文件名。但不推荐这样写,由于参数调换次序是容许的,假如写成-cfv都会造成压缩后的文件名弄成了v。
使用-v表示生成详尽的输出,在压缩或则解压的模式中,会列举正在向归档文件读或则写的文件名子。
创建tar.gz归档文件
示例:打包而且使用gzip压缩。
描述:将/home/test/images目录下的所有文件以及目录中的文件打包,并用gzip进行压缩,生成名为MyImages-18-06-02.tar.gz的归档文件,置于当前目录下。
# tar -zcv -f MyImages-18-06-02.tar.gz /home/test/images
OR
# tar -zcv -f MyImages-18-06-02.tar.tgz /home/test/images
/home/test/images/alejandro-gonzalez-17189.jpg
/home/test/images/brooke-lark-275181.jpg
/home/test/images/brenda-godinez-228181.jpg
/home/test/images/artur-rutkowski-97622.jpg
/home/test/images/ben-white-138743.jpg
复制
-z表示要使用gzip支持来压缩或则解压文件,注意gzip的压缩的文件格式最好写成tar.gz。(注:tar.gz和tgz是同一个意思)
打包压缩排除个别文件
示例:打包压缩并排除个别文件。
描述:将/home/test/images目录下,排除brooke-lark-275181.jpg和ben-white-138743.jpg之外的所有文件打包,并用gzip进行压缩,生成名为MyImages-18-06-02.tar.gz的归档文件,置于当前目录下。
# tar -czv -f MyImages-18-06-02.tar.gz --exclude=./brooke-lark-275181.jpg --exclude=./ben-white-138743.jpg /home/test/images
/home/test/images/alejandro-gonzalez-17189.jpg
/home/test/images/brenda-godinez-228181.jpg
/home/test/images/artur-rutkowski-97622.jpg
复制
解压归档文件(默认)
示例:解压,默认解压。
描述:将名为MyImages-18-06-02.tar的归档文件解压至当前目录下。
# tar -xvf MyImages-18-06-02.tar
home/test/images/alejandro-gonzalez-17189.jpg
home/test/images/brenda-godinez-228181.jpg
home/test/images/artur-rutkowski-97622.jpg
复制
其中,-x参数表示去解压一个归档文件,假如归档文件中有两个相同名字的文件,这么每一个文件就会被解压下来,之后最新的会覆盖旧的文件。注意这儿没有指定-j参数,由于tar见到指定了-x参数,就晓得这是解压操作,会手动判定该解压包的压缩类型。
解压归档文件并指定目录
示例:解压到一个指定目录。
描述:将名为MyImages-18-06-02.tar.gz的归档文件解压至一个指定的目录。
# tar -xv -f MyImages-18-06-02.tar -C /home/test/public_images
home/test/public_images/alejandro-gonzalez-17189.jpg
home/test/public_images/brenda-godinez-228181.jpg
home/test/public_images/artur-rutkowski-97622.jpg
复制
查看压缩包文件信息
示例:查看压缩包文件信息。
描述:列举MyImages-18-06-02.tar.bz2中的文件信息,-v参数,会生成与ls(1)命令相仿的输出。
# tar -tv -f MyImages-18-06-02.tar.gz
OR
# tar -tv -f MyImages-18-06-02.tar.bz2
-rw-r--r-- root/root 2176861 2018-06-02 21:26 home/test/images/alejandro-gonzalez-17189.jpg
-rw-r--r-- root/root 8452524 2018-06-02 21:26 home/test/images/brenda-godinez-228181.jpg
-rw-r--r-- root/root 1131986 2018-06-02 21:26 home/test/images/artur-rutkowski-97622.jpg
复制
解压单个文件
示例:解压单个文件。
描述:将home/test/.bashrc这一个文件从归档文件中提取下来。
# tar -xv -f command-18-06-02.tar home/test/.bashrc
home/test/.bashrc
复制
解压多个指定的文件
示例:解压多个指定的文件。
描述:将file1、file2等多个文件从归档文件中提取下来,可以用空格隔开多个文件,也可以用转义的方式。
# tar -zxv -f MyImages-18-06-02.tar.gz "file 1" "file 2"
OR
# tar -zxv -f MyImages-18-06-02.tar.gz --wildcards '*b*.jpg'
home/test/images/brooke-lark-275181.jpg
home/test/images/brenda-godinez-228181.jpg
home/test/images/ben-white-138743.jpg
home/test/images/aleks-dahlberg-274646.jpg
复制
总结
以上就是这篇文章的全部内容了,希望本文的内容对你们的学习或则工作具有一定的参考学习价值,假如有疑惑你们可以留言交流,感谢你们对ZaLou.Cn的支持。