前言
tar命令用来归档多个文件或目录到单个归档文件中,并且归档文件可以进一步使用gzip或者bzip2等技术进行压缩。
命令格式
tar [OPTION...] [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 程序打包的数据,没有被压缩过。
*.tar.gz(简写为 .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 只要记住下面的方式:
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
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对小牛知识库的支持。
本文向大家介绍Linux tar 命令用法实例详解,包括了Linux tar 命令用法实例详解的使用技巧和注意事项,需要的朋友参考一下 tar 命令可以为linux的文件和目录创建档案。利用 tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar 最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案。利用 tar 命令,可以把一大堆的文件
本文向大家介绍linux 命令每天必学之tar命令,包括了linux 命令每天必学之tar命令的使用技巧和注意事项,需要的朋友参考一下 通过SSH访问服务器,难免会要用到压缩,解压缩,打包,解包等,这时候tar命令就是是必不可少的一个功能强大的工具。linux中最流行的tar是麻雀虽小,五脏俱全,功能强大。 tar命令可以为linux的文件和目录创建档案。利用tar,可以为某一特定文件创建档案(备
本文向大家介绍Linux 常用命令之Linux more命令使用方法,包括了Linux 常用命令之Linux more命令使用方法的使用技巧和注意事项,需要的朋友参考一下 more 是我们最常用的工具之一,最常用的就是显示输出的内容,然后根据窗口的大小进行分页显示,然后还能提示文件的百分比。 more功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上。 more会以一页一页的显示方
本文向大家介绍17个Linux tar命令实用示例,包括了17个Linux tar命令实用示例的使用技巧和注意事项,需要的朋友参考一下 Tar(Tape ARchive,磁带归档的缩写,LCTT 译注:最初设计用于将文件打包到磁带上,现在我们大都使用它来实现备份某个分区或者某些重要的目录)是类 Unix 系统中使用最广泛的命令,用于归档多个文件或目录到单个归档文件中,并且归档文件可以进一步使用 g
主要内容:1.列出Mysql数据库,2.列出Mysql数据库,3.将Mysql导入hdfs,4.hdfs到Mysql导出,5.hbase - mysql,6.job1.列出Mysql数据库 2.列出Mysql数据库 3.将Mysql导入hdfs 4.hdfs到Mysql导出 注意 需要提前在mysql创建表 5.hbase - mysql 由于没有提供接口所以采用迂回的方法传输数据, hbase - hdfs - mysql 6.job 作业相当于一个可以执行的任务也可以不执行。可以放在那里不执
本文向大家介绍Git 命令详解及常用命令整理,包括了Git 命令详解及常用命令整理的使用技巧和注意事项,需要的朋友参考一下 Git 命令详解及常用命令 Git作为常用的版本控制工具,多了解一些命令,将能省去很多时间,下面这张图是比较好的一张,贴出了看一下: 关于git,首先需要了解几个名词,如下: 一、新建代码库 二、配置 Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),