tar 的功能类似于 Windows 中的 WinRAR。它可以将多个目录或文件打包成一个大文件,在打包的过程中还可以透过 gzip/bzip2/xz 的支持,对文件进行压缩 1 。
tar 的选项参数很多,主要用到的有以下这些:
还是太多,记不住怎么办? 记住下面这些最常用的命令即可:
总结一下:z 为gzip;j 为bzip2;J 为xz。c 为压缩;t 为查询;x 为解压缩。最后跟着 vf。f 一定要是最后一个,如果放在其他选项之前,tar 就会把文件名搞错。比如 tar -zcfv xxx 命令,tar 指令就会认为压缩文件名为 v!
压缩的文件名称要根据压缩算法加上响应的后缀:
只有知道了压缩算法,我们才能解的出来,你说是吗?所以文件名规范很重要。
假设我们需要备份 /etc 文件夹,把它打成一个压缩包 1 。这在实际应用中很常见,因为 /etc 文件夹存放了系统主要配置文件。在英文中完整单词是etc.,也就是后面会带上一个句点,表示“等等”之意。
接下来,我们分别使用 gzip、bzip2与 xz 算法对 /etc 文件夹进行打包压缩。
gzip 压缩指令: time tar -zpcvf /root/etc.tar.gz /etc
bzip2压缩指令: time tar -jpcvf /root/etc.tar.bz2 /etc
xz 压缩指令: time tar -Jpcvf /root/etc.tar.xz /etc
从 real 中可以看出: gzip 的压缩速度最快,而 xz 的压缩速度最慢。
从大小上来看,xz 的压缩率最高,而gzip 压缩率最差。
压缩率高,自然需要时间成本。因此需要压缩的文件夹很大,那么就要多多考虑时间成本咯。因为 gzip 压缩速度快,这也是 *.tar.gz 比较流行的原因之一。
假设有这样一种场景:我们需要打包某个文件夹(/root),但这个文件夹中的某个文件或者子文件夹不想打包进去(带 etc 前缀)。也就是希望这个文件夹部分打包,部分不打包。可以执行以下指令:
tar -zcvf /root/test.tar.gz --exclude=/root/etc* --exclude=/root/test.tar.gz /root
加了 --exclude=/root/test.tar.gz 是为了排除自身,否则压缩包中会包含一个大小为 0 的自身文件,这恐怕不是我们希望看到的:
通过 tar -ztvf test.tar.gz 就可以查看刚刚新打的压缩包中所包含的文件列表:
使用命令 tar -ztvf etc.tar.gz 查看刚刚打好的压缩包。注意要使用匹配的解压缩算法才能正确解压,比如示例中是 gz 作为后缀,所以加了 -z 选项表示使用 gzip 算法进行解压。
部分输出内容:
可以看到该命令把文件的权限、账户以及归属组也一并打印出来了。
而且还有一点很关键,这些文件都没有根目录。如果没有拿掉根目录,解压缩后的文件名就会是绝对路径, 亦即解压缩后的数据一定会被放置 到 /etc/xxx 去 1 !这样系统的 /etc 文件夹就会被覆盖,后果很严重。所以,tar 打包指令默认都会去除放入包中文件的根目录。除非通过 -P 显示要求保留这些文件的根目录。
(1)完全解压
利用 tar -zxvf etc.tar.gz -C /tmp 命令把 etc.tar.gz 解压到 /tmp。解压成功后,就会在 /tmp 下看到 /etc 文件夹。
如果需要在本地路径下直接解开,那直接执行 tar -zxvf etc.tar.gz 即可。
(2)部分解压
假设我们需要把压缩包(etc.tar.gz)中的 vconsole.conf 解压出来。可以先执行以下命令,查询出该文件所对应的相对路径:
tar -ztvf etc.tar.gz | grep ‘console’
拿到需要解压的文件路径之后,就可以执行 tar -zxvf etc.tar.gz etc/vconsole.conf
进入当前目录的 etc 文件夹,就可以看到 vconsole.conf 已经被解压出来了:
【1】 鸟哥. 鸟哥的Linux私房菜 基础学习篇[M]. 第四版. 北京: 人民邮电出版社,2018:359-362.
② 如何在Linux上使用tar命令解压和压缩文件
Linux系统压缩和解压文件都可以用tar命令,在压缩文件时指定压缩参数,解压缩时指定解压参数。
tar命令主要参数解释:
-z参数:表示要解压或压缩的是tar.gz文件(如果是tar.bz2就是-j)
-x参数:表示是执行解压缩操作而不是打包操作
-v参数:表示列出解压时的详细消息
-f参数:指定要解压的文件名,或者指定新建的打包文件的名字
tar命令解压时还可以指定解压的目标目录,就是把压缩文件的内容解压到哪个文件夹内,这个参数是-C(大写的C)。
解压tar.gz文件的例子:tar -zxv -f test.tar.gz -C /home/user/target
解压tar.bz2文件的例子: tar -jxv -f test.tar.bz2 -C /home/user/target
下面说一下压缩文件,Linux上最常用的压缩格式一般是bzip2格式(常用bz2后缀)和gzip格式(常用gz后缀),因为它俩的压缩比比较高。压缩命令也是用tar命令,只不过是把上面的解压tar命令中的-x参数换成-c参数,-c参数表示新建打包文件,在配合上-j或-z参数就能指定打包文件的压缩格式。注意:当压缩文件时,-f参数后面跟的是新建的压缩包的名字,压缩包文件名后面,还要加上要压缩的文件或文件夹(这时不需要-C参数)。不多说,直接看例子就明白了:
tar -jcv -f newfile.tar.bz2 要压缩的文件或目录
tar -zcv -f newfile.tar.gz 要压缩的文件或目录
③ tar文件怎么解压
tar文件解压方法:安装文件浏览器后打开,在主页面点击内部存储标签,按住需要解压的tar文件,选择压缩文件解压后保存或旦的路径,点击“确定”即可。
下载并安装文件浏览器,安装成功后返回桌面。通过手机桌面打开文件浏览器。在主页面点击内部存储标签。在本地文件系统中找到需要解压的tar文件。按住需要解压的tar文件,选中后松开手指。
点击屏幕右下角的更多按钮兆册,并在弹出的菜单中选择解压到。在解压所选文件到对话框,选择压缩文件解压后保存的路径,然后点击“确定”。文件浏览器会将tar文件进行解压并保存到指定的路径。
tar文件简介
Unix和类Unix系统上的压缩打包工具,可以将多个文件合并为一个文件,打包后的文件名亦为“tar”。tar文件格式已经成为POSIX标准,最初是POSIX.1-1988,当前是POSIX.1-2001。本程序最初的设计目的是将文件备份到磁带上(tape archive),因而得名tar。
常用的tar是族团宏自由软件基金会开发的GNU版,稳定版本是1.28,发布于2014年7月27日。同时,它有多个压缩率不同的版本,如tar.xz和tar.gz,前者的压缩率更高,但可能有兼容性问题。
④ 在Linux下如何用tar命令调用gzip进行高压缩率的打包将指定目录下的所有文件及文件夹打包到指定目录下
GZIP="-9" tar zcvf /home/homee.tgz /media
⑤ tar文件怎么加压缩
在你要压缩的文件夹上点右键。选择添加到压缩文件XXXXXXXX.RAR哪个就行了。
⑥ tar压缩包怎么解压
在Linux的默认的版本中不是所有的命令都有,但是基本的命令是都有的,但是有一下不常用的命令是没有,在没有什么情况,那么就需要通过的自己来进行安装所需要的命令,可以通过的是yum来安装所需的命令。
在进行使用Linux来尝试进行解压的一个tar的文件,那么就需要找到为tar的压缩包的文件。
然后命令中输入为:tar文件名.tar,然后直接回车即可,提示没有tar的命令。
没有这个tar的命令是可以通过yum的方法来机型安装,直接输入yum-yinstalltar。解压tar的文件需要有一些命令的,所以可以通过帮助的方法来解压文件,获取tar的帮助,直接输入tar--help即可。
⑦ rar和tar的区别
区别如下:
RAR:是一种专利文件格式,用于数据压缩与归档打包。
TAR:Unix和类Unix系统上的压缩打包工具,可以将多个文件合并为一个文件,打包后的文件后缀亦为“tar”。
tar是无压缩的,比压缩效率,gz的算法最原始,所以较低,其次zip,接着rar,7z两个主要算法基本上略优于rar,基本不相上下。
在Linux里面,tar一般和其他没有文件管理的压缩算法文件结合使用,用tar打包整个文件目录结构成一个文件,再用gz,bzip等压缩算法压缩成一次。也是Linux常见的压缩归档的处理方法。
zip相对比较老,格式规范可知,所以积累了各种加解压实现,有较好的兼容性,不过现有文件格式相对而言比较落后,还有会有文件名乱码问题(因为文件名是用非Unicode编码)。
RAR文件特点:
RAR通常情况比ZIP压缩比高,但压缩/解压缩速度较慢。
分卷压缩:压缩后分割为多个文件。
固实压缩:把要压缩的视为同一个文件以加大压缩比,代价是取用包中任何文件需解压整个压缩包。
恢复记录:加入冗余数据用于修复,在压缩包本身损坏但恢复记录够多时可对损坏压缩包进行恢复。
加密:RAR 2.0使用AES-128-cbc,(rar5.0以后为AES-256CBC)。之前RAR的加密算法为私有。目前均未被直接攻破(至少没有公开),没有密码时只有暴力破解。