Linux 常用的tar压缩和解压命令详解

2,906 阅读8分钟

「这是我参与2022首次更文挑战的第5天,活动详情查看:2022首次更文挑战

前言

  嗨,大家好,上次介绍了Lnux 常用的zip压缩和解压命令详解,发现大家对相关知识还是比较重视的,三天时间有1000+的阅读量,感谢大家的支持与喜爱,感谢平台的推荐。因此根据大家需要,本次将介绍一下压缩和解压的常用的另一个tar命令。

  上一篇文章的传送门: Linux 常用的zip压缩和解压命令详解

tar命令

初识

  相信很多开发者对tar命令都很熟悉,我们在Linux系统中备份文件的时候经常会使用到。Linux中tar命令的英文全拼是tape archive,文件归档,其tar命令主要用于备份文件。tar命令是用来建立、还原备份文件的一种工具程序,它可以加入,解开备份文件内的文件。tar命令可以将单独的文件或者文件夹或某个目录下的文件和文件夹打包成一个文件存储起来,如果需要提取内容,执行解压命令即可恢复所有文件。

  执行tar命令打包压缩成的文件后缀为.tar.gz。当遇到.tar.gz的文件,也可以使用tar命令来解压查看。

参数

tar参数参数描述信息
-A或--catenate新增文件到已存在的备份文件。
-b<区块数目>或--blocking-factor=<区块数目>设置每笔记录的区块数目,每个区块大小为12Bytes。
-B或--read-full-records读取数据时重设区块大小。
-c或--create建立新的备份文件。
-C<目的目录>或--directory=<目的目录>切换到指定的目录。
-d或--diff或--compare对比备份文件内和文件系统上的文件的差异。
-f<备份文件>或--file=<备份文件>指定备份文件。
-F<Script文件>或--info-script=<Script文件>每次更换磁带时,就执行指定的Script文件。
-g或--listed-incremental处理GNU格式的大量备份。
-G或--incremental处理旧的GNU格式的大量备份。
-h或--dereference不建立符号连接,直接复制该连接所指向的原始文件。
-i或--ignore-zeros忽略备份文件中的0 Byte区块,也就是EOF。
-k或--keep-old-files解开备份文件时,不覆盖已有的文件。
-K<文件>或--starting-file=<文件>从指定的文件开始还原。
-l或--one-file-system复制的文件或目录存放的文件系统,必须与tar指令执行时所处的文件系统相同,否则不予复制。
-L<媒体容量>或-tape-length=<媒体容量>设置存放每体的容量,单位以1024 Bytes计算。
-m或--modification-time还原文件时,不变更文件的更改时间。
-M或--multi-volume在建立,还原备份文件或列出其中的内容时,采用多卷册模式。
-N<日期格式>或--newer=<日期时间>只将较指定日期更新的文件保存到备份文件里。
-o或--old-archive或--portability将资料写入备份文件时使用V7格式。
-O或--stdout把从备份文件里还原的文件输出到标准输出设备。
-p或--same-permissions用原来的文件权限还原文件。
-P或--absolute-names文件名使用绝对名称,不移除文件名称前的"/"号。
-r或--append新增文件到已存在的备份文件的结尾部分。
-R或--block-number列出每个信息在备份文件中的区块编号。
-s或--same-order还原文件的顺序和备份文件内的存放顺序相同。
-S或--sparse倘若一个文件内含大量的连续0字节,则将此文件存成稀疏文件。
-t或--list列出备份文件的内容。
-T<范本文件>或--files-from=<范本文件>指定范本文件,其内含有一个或多个范本样式,让tar解开或建立符合设置条件的文件。
-u或--update仅置换较备份文件内的文件更新的文件。
-U或--unlink-first解开压缩文件还原文件之前,先解除文件的连接。
-v或--verbose显示指令执行过程。
-V<卷册名称>或--label=<卷册名称>建立使用指定的卷册名称的备份文件。
-w或--interactive遭遇问题时先询问用户。
-W或--verify写入备份文件后,确认文件正确无误。
-x或--extract或--get从备份文件中还原文件。
-X<范本文件>或--exclude-from=<范本文件>指定范本文件,其内含有一个或多个范本样式,让ar排除符合设置条件的文件。
-z或--gzip或--ungzip通过gzip指令处理备份文件。
-Z或--compress或--uncompress通过compress指令处理备份文件。
-<设备编号><存储密度>设置备份用的外围设备编号及存放数据的密度。
--after-date=<日期时间>此参数的效果和指定"-N"参数相同。
--atime-preserve不变更文件的存取时间。
--backup=<备份方式>或--backup移除文件前先进行备份。
--checkpoint读取备份文件时列出目录名称。
--concatenate此参数的效果和指定"-A"参数相同。
--confirmation此参数的效果和指定"-w"参数相同。
--delete从备份文件中删除指定的文件。
--exclude=<范本样式>排除符合范本样式的文件。
--group=<群组名称>把加入设备文件中的文件的所属群组设成指定的群组。
--help在线帮助。
--ignore-failed-read忽略数据读取错误,不中断程序的执行。
--new-volume-script=<Script文件>此参数的效果和指定"-F"参数相同。
--newer-mtime只保存更改过的文件。
--no-recursion不做递归处理,也就是指定目录下的所有文件及子目录不予处理。
--null从null设备读取文件名称。
--numeric-owner以用户识别码及群组识别码取代用户名称和群组名称。
--owner=<用户名称>把加入备份文件中的文件的拥有者设成指定的用户。
--posix将数据写入备份文件时使用POSIX格式。
--preserve此参数的效果和指定"-ps"参数相同。
--preserve-order此参数的效果和指定"-A"参数相同。
--preserve-permissions此参数的效果和指定"-p"参数相同。
--record-size=<区块数目>此参数的效果和指定"-b"参数相同。
--recursive-unlink解开压缩文件还原目录之前,先解除整个目录下所有文件的连接。
--remove-files文件加入备份文件后,就将其删除。
--rsh-command=<执行指令>设置要在远端主机上执行的指令,以取代rsh指令。
--same-owner尝试以相同的文件拥有者还原文件。
--suffix=<备份字尾字符串>移除文件前先行备份。
--totals备份文件建立后,列出文件大小。
--use-compress-program=<执行指令>通过指定的指令处理备份文件。
--version显示版本信息。
--volno-file=<编号文件>使用指定文件内的编号取代预设的卷册编号。

示例

  为了方便理解,将进行简单示例介绍,当然这次还是使用zip中使用的测试文件进行演示,仅供大家学习使用。首先进入目录,文件包含:admin文件夹、index.html、test.html三个文件和文件夹。

图片.png

将文件压缩

将文件index.html文件压缩为index.tar.gz

tar -czvf index.tar.gz index.html

  命令介绍-czvf其中c代表创建一个新的备份文件,z代表通过gzip指令处理备份文件,v代表显示指令执行过程,f代表指定备份文件。

图片.png   当然,也可以不显示执行过程,去掉v即可,执行命令如下,大可以看到通过对比之后发现,途中红色部分的不同之处已经没有显示执行过程了。

tar -czf test.tar.gz test.html

图片.png

显示压缩文件内容

  当我们遇到多个备份文件,如何显示压缩文件的详情信息呢?执行命令如下,可以看到已经读取到备份文件的权限、用户、文件大小、文件创建时间、和文件名称了。

tar -tzvf test.tar.gz

图片.png

解压文件

   已有一个index.tar.gz的文件,我们将其解压,执行的命令是:

tar -xzvf index.tar.gz

   如下图我们先将原有的文件删除之后,执行解压解压的命令,可以看到文件已经解压出来我们刚刚压缩的文件。这样我们的备份文件就还原了。 图片.png

查看帮助

   在执行命令过程中,如果忘记tar命令的相关指令信息,可以直接调用tar的指令帮助信息,能够为我们提供指令的含义和使用方法。需要注意的是使用两个 -- 。执行命令如下:

tar --help

图片.png

备份文件夹

  有一个admin的文件夹,需要将文件夹进行备份为admin.tar.gz。需要执行的命令是:

tar -czvf admin.tar.gz admin/

图片.png

结语

  好了,以上就是Linux 常用的tar压缩和解压命令详解,更多的命令示例在不断完善中欢,欢迎补充指导,感谢您的阅读,希望您喜欢,如对您有帮助,欢迎点赞收藏。如有不足之处,欢迎评论指正。下次见。

  作者介绍:【小阿杰】一个爱鼓捣的程序猿,JAVA开发者和爱好者。公众号【Java全栈架构师】维护者,欢迎关注阅读交流。