Linuxshell命令⽤法及常见⽤例之tar命令
前⾔
tar命令⽤来归档多个⽂件或⽬录到单个归档⽂件中,并且归档⽂件可以进⼀步使⽤gzip或者bzip2等技术进⾏压缩。
命令格式
tar [] [FILE]...
命令功能
Tar(Tape ARchive,磁带归档的缩写,最初设计⽤于将⽂件打包到磁带上,现在⼤都使⽤它来实现备份某个分区或者某些重要的⽬录)是类Unix系统中使⽤最⼴泛的命令,⽤于归档多个⽂件或⽬录到单个归档⽂件中,并且归档⽂件可以进⼀步使⽤gzip或者bzip2等技术进⾏压缩,还能保留其⽂件权限。换⾔之,tar命令也可以⽤于备份:先是归档多个⽂件和⽬录到⼀个单独的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个位被组织成⼀组,称为字节。⼀般来说,⼀个字节的8位是没有被全部利⽤起来的,这些没有被利⽤的位占据了⼀个⽂件的⼤部分空间,⽽“⽂件压缩”就是利⽤复杂的计算⽅式,将这些没有利⽤的空间腾出来,以让⽂件占⽤的空间变⼩。
简单来说,「压缩」就是把⽂件中没有完全填满的空间填满。压缩过的⽂件不能直接被操作系统所使⽤,因此,「解压缩」就是指把⽂件「还原」为未压缩之前的模样。压缩前与压缩后的⽂件所占⽤的磁盘空间⼤⼩之⽐就是「压缩⽐」。
常见的压缩格式
Linux 中常见的压缩格式有:
*.Z:compress 程序压缩的⽂件。
*.gz:gzip 程序压缩的⽂件。
*.bz2:bzip2 程序压缩的⽂件。
*.tar:tar 程序打包的数据,没有被压缩过。
*.(简写为 .tgz):tar 程序打包的数据,经过 gzip 的压缩。
*.tar.bz2(简写为 .tbz2):tar 程序打包的数据,经过 bzip2 的压缩。
上⾯的压缩格式中,主要是gzip和bzip2两个压缩命令,它们是GNU计划的中的⼀部分,在此之前是compress命令,但它已经不再流⾏了。bzip2⽐gzip的压缩⽐很好,不过bzip2通常只能针对⼀个⽂件来压缩和解压缩。如果是这样的话,压缩整个开发环境⽬录就太繁琐了。
因此tar命令就出现了,tar不是⼀个 “压缩命令”,⽽是⼀个“打包命令”。也就是说,tar可以把很多⽂件「打包」成⼀个⽂件,甚⾄连⽬录也可以进⾏打包。⼀开始tar命令的确是不⽀持压缩的功能,后来GNU计划为了提供给使⽤者更⽅便并且更加强⼤的压缩与打包功能,就把整个tar与压缩的功能结合在⼀起了。
仅仅打包起来的tar⽂件俗称tarfile⽂件,经过压缩的tar⽂件叫做tarball⽂件。
全能的 tar 命令
概要
tar可以将多个⽬录或⽂件打成⼀个⼤⽂件,同时⽀持gzip/bzip2
归档:tar {-c} [option…] -f destination source
追加归档:tar {-r | -u} -f source [option…] destination
解压:tar {-t | -x} -f source [option…] -C destination
最简单的使⽤ tar 只要记住下⾯的⽅式:
压缩:tar -jcv -f filename.tar.bz2 被压缩的⽂件或⽬录名称
查看⽂件:tar -jtv -f filename.tar.bz2
解压缩:tar -jxv -f -C 解压到哪⾥
filename.tar.bz2 既然tar不是⼀个压缩命令,是个打包命令,那么是如何做到打包并压缩的呢?我们先来看⼀下tar命令的常⽤参数:
模式参数
-c(–create):创建新的归档⽂件。
-r(–append):与-c⼀样创建新的归档⽂件,但这是以追加的模式,只能往未压缩过的归档⽂件中追加,要求指定-f参数。
-t:查看归档⽂件的内容含有哪些⽂件,可以看到包括⽂件名在内的详细信息。
-u:与-r⼀样,但是只往归档⽂件添加更新的⽂件。
-x:解压缩归档⽂件。如果⼀个归档⽂件⾥有相同⽂件名的多个⽂件,那么会先将每个⽂件解压,最新的⽂件将覆盖旧的⽂件。
tar分为三种模式,-c,-r,-u三个⼀类,为归档/压缩模式,在该模式下,tar会递归遍历指定⽬录下的所有⽬录和⽂件,并创建归档⽂件。-x表⽰为去归档/解压模式,-t表⽰为打印列表模式。
通⽤参数
-j:使⽤bzip2的⽀持进⾏压缩和解压缩,⽂件名最好为*.tar.bz2。
-
z:使⽤gzip的⽀持进⾏压缩和解压缩,⽂件名最好为*.。
-v:在压缩/解压缩的过程中,将正在处理的⽂件名显⽰出来。
-f:后⾯接被处理的⽂件名,最好把-f单独出来写⼀个参数。
-C:指定解压的⽬录。
-p:保留⽂件的原始信息,权限等等
-P:解压时保留绝对路径。
–exclude=FILE:在打包压缩的时候,不要将FILE打包。
打包并创建归档⽂件
⽰例:打包⼀个⽬录。
描述:将/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.
/home/test/.bash_profile
/home/test/nginx-1.10.
-c(–create的简写)参数,这表⽰为指定的⽂件或者⽬录创建新的归档⽂件。使⽤-f指定读取或者写⼊的归档⽂件,可以⽤-表⽰标准输⼊或者标准输出,-f可以与其他参数连起来写,必须保证f参数后⾯跟的是⽂件名。但不推荐这样写,因为参数调换顺序是允许的,如果写成-cfv就会导致压缩后的⽂件名变成了v。
使⽤-v表⽰⽣成详细的输出,在压缩或者解压的模式中,会列出正在向归档⽂件读或者写的⽂件名字。
创建归档⽂件
⽰例:打包并且使⽤gzip压缩。
描述:将/home/test/images⽬录下的所有⽂件以及⽬录中的⽂件打包,并⽤gzip进⾏压缩,⽣成名为MyImages-18-06-
的归档⽂件,放在当前⽬录下。
# tar -zcv -f /home/test/images
OR
# tar -zcv -f /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的压缩的⽂件格式最好写成。(注: 和 tgz 是同⼀个意思)
打包压缩排除某些⽂件
⽰例:打包压缩并排除某些⽂件。
描述:将/home/test/images⽬录下,排除brooke-lark-275181.jpg和ben-white-138743.jpg之外的所有⽂件打包,并⽤gzip进⾏压缩,⽣成名为的归档⽂件,放在当前⽬录下。
# tar -czv -f --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参数,就知道这是解压操作,会⾃动判断该解压包的压缩类型。
解压归档⽂件并指定⽬录
⽰例:解压到⼀个指定⽬录。
描述:将名为的归档⽂件解压⾄⼀个指定的⽬录。
# 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
查看压缩包⽂件信息
linux创建文件指令⽰例:查看压缩包⽂件信息。
描述:列出MyImages-18-06-02.tar.bz2中的⽂件信息,-v参数,会⽣成与ls(1)命令相近的输出。
# tar -tv -f
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 "file 1" "file 2"
OR
# tar -zxv -f --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
总结
以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作具有⼀定的参考学习价值,如果有疑问⼤家可以留⾔交流,谢谢⼤家对的⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论