Linux之打包指令——tar

这一节主要介绍tar指令

  1. linux打包指令tar

前一节介绍了gzip、bzip2、xz压缩指令,这些压缩指令只能对单个文件或者对目录下所有文件分别压缩,不像windows中的WinRAR那样可以“随意压缩”,此节介绍的tar指令可以实现“随意压缩”

tar指令

root@DESKTOP-I95TUI1:~# tar -cvp -f my_tar.tar filename

选项与参数:

-c :打包文件必带参数,可搭配 -v 来察看过程中被打包的文件名(filename)

-t :察看打包文件的内容含有哪些文件名,重点在察看“文件名”就是了;

-x :解压文件必带参数,可以搭配 -C (大写) 在特定目录解开

特别留意的是, -c, -t, -x 不可同时出现在一串命令行中。

-z :通过 gzip 的支持进行压缩/解压缩:此时文件名最好为 *.tar.gz

-j :通过 bzip2 的支持进行压缩/解压缩:此时文件名最好为 *.tar.bz2

-J :通过 xz 的支持进行压缩/解压缩:此时文件名最好为 *.tar.xz

特别留意, -z, -j, -J 不可以同时出现在一串命令行中

-v :在压缩/解压缩的过程中,将正在处理的文件名显示出来!

-f filename:-f 后面要立刻接要被处理的文件名!建议 -f 单独写一个选项啰!(比较不会忘记)

-C 目录 :这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。

其他后续练习会使用到的选项介绍:

-p(小写) :保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件

-P(大写) :保留绝对路径,亦即允许备份数据中含有根目录存在之意;

--exclude=FILE:在压缩的过程中,不要将 FILE 打包!

其实我们常用到的打包命令只需要记住一条即可,假设我们需要给/etc/下面的文件打包:

打包文件指令

root@DESKTOP-I95TUI1:~# tar -zcvp -f my_etc.tar.gz /etc/ 使用gzip软件压缩打包(最常用)

root@DESKTOP-I95TUI1:~# tar -jcvp -f my_etc.tar.bz2 /etc/ 使用bzip2软件压缩打包

root@DESKTOP-I95TUI1:~# tar -Jcvp -f my_etc.tar.xz /etc/ 使用xz软件压缩打包

root@DESKTOP-I95TUI1:~# tar -cvp -f my_etc.tar /etc/ (不进行压缩仅打包)

解压打包文件指令:

root@DESKTOP-I95TUI1:~# tar -zxvp -f my_etc.tar.gz 使用gzip软件解压打包文件(最常用)

root@DESKTOP-I95TUI1:~# tar -jxvp -f my_etc.tar.bz2 使用bzip2软件解压打包文件

root@DESKTOP-I95TUI1:~# tar -Jxvp -f my_etc.tar.xz 使用xz软件解压打包文件

root@DESKTOP-I95TUI1:~# tar -xvp -f my_etc.tar 解压打包文件

详细参数介绍见上面选项参数,-f是指定打包文件,至于文件扩展名是自定义的,为了以后解压做个标记,-f选项也可以与前面和在一起(但需要把-f放在最后 例如:-jcvpf正确、-jfcvp错误,所以一般把-f单独拿出来,思考一下为什么?还是不明白的可以评论区讨论哦),对gzip、bzip2、xz不了解的参见上一节:

Linux之文件压缩的简单介绍gzip,bzip2,xz

示例一、

Linux之打包指令——tar

tar打包压缩文件

上面的指令是使用bzip2软件(-j)对目录/etc/下的文件进行压缩打包,朋友们测试的时候可以加上-v参数,这样会输出打包的文件名,使用time命令是为了计算次打包指令一共花费了多少时间(只需要看real),-p是把需要打包的文件原本权限与属性一并打包,意义非凡哦。另外tar: Removing leading `/' from member names 这句话的意思是在打包压缩时,去除根目录(你知道为什么吗?猜一下?)上一节介绍过,gzip、bzip2、xz压缩比例与压缩时间的问题,我们来对比一下三种打包压缩所需要的时间与压缩比例

Linux之打包指令——tar

gzip、bzip2、xz打包压缩对比

由上图可知,/etc/目录未压缩打包之前是2.5M,分别使用三种压缩软件之后压缩文件大小可以通过对比了解到,在时间上gzip

示例二、

Linux之打包指令——tar

解包文件

上图是对gzip类型的打包压缩文件解包操作,默认是解压到当前目录,也可以指定目录(-C)

Linux之打包指令——tar

指定目录解包

细心的朋友们可能发现了,解包操所是对/etc/文件解压到当前目录,还记得上面说过的打包时有一句提示信息:tar: Removing leading `/' from member names(移除根目录),现在明白了吧,如果打包时不移除根目录,那么解包时会发生什么?会替换到原目录。所以一定要注意哦。

打包指令还有很多其他强大的功能:

打包某目录,但不含该目录下的某些文件之作法

例如,我要打包/etc/下的文件但是不想打包/etc/acpi/目录怎么办呢?使用--exclude

--exclude

可以在指令后面加多个--exclude

仅备份比某个时刻以后的文件

--newer-mtime

这个功能可以说是相当重要的,举个例子:如果一个网站需要每月备份一次,总不能每次都从开始时间备份吧,当然是以时间段为单位备份咯。

转自https://www.toutiao.com/i6555066284092949006/

你可能感兴趣的:(Linux之打包指令——tar)