扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
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的方法如下:
操作设备:戴尔笔记本电脑
操作系统:win10
操作程序:linux主机2.01
1、首先进入到等待输入shell指令的linux命令行状态下,如下图所示。
2、输入shell指令:tar -czf test.tar.gz test.txt,如下图所示。
3、最后按下回车键就会看到test.txt被成功压缩为test.tar.gz,如下图所示。
原单词 tar命令最初的设计目的是将文件备份到磁带上(tape archive),因而得名tar
实物长这样
tar 命令是linux系统中常用的 压缩文件 和 解压缩文件命令
tar 命令的参数 异常之多,咱们只学习满足 压缩文件 和 解压缩文件 命令的参数就可以了
mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);"工作中应用于安装软件,搭建应用,部署环境/mark
举例: 将root目录下的 adir目录和a.txt文件 压缩为 test.tar.gz
注意是大写C
如果 不使用-C参数 则默认解压至当前工作目录
举例: 将 test.tar.gz 压缩文件解压到/root目录
-c 建立新的备份文件。
-x 从备份文件中还原文件。
-v 显示指令执行过程。
-f 指定备份文件。
-z 通过gzip指令处理备份文件。(如果解压文件后缀是.tar,没有.gz则不需要使用-z参数)
-C 指定解压到的目录
使用xshell连接linux
在root 目录下 新建 tarTest目录
进入tarTest目录
压缩 /root/lnTest文件夹 和 /root/Centos-7.repo 文件 到 /root/tarTest目录下,压缩文件名为 test.tar.gz
进入/root/tarTest目录
解压test.tar.gz到当前目录(/root/tarTest)
解压test.tar.gz到/root/rmTest目录
tar 归档+压缩
语法:tar czvf newfile.tar.gz SOURCE
语法:tar czvf 压缩后的文件名(tar.gz tar.bz2) 需要压缩的文件或目录
常用参数:
-z, --gzip 以gzip方式压缩 扩展名: tar.gz
-j : 以bz2方式压缩的 扩展名:tar.bz2
-J: 以xz 方式压缩 扩展名:tar.xz
例1:创建.tar.gz 包
[root@xuegod63 ~]# tar cvf /root/etc.tar /etc
[root@localhost test]# tar zcvf /root/etc.tar.gz /etc #归档,注意备份的名字后缀
[root@localhost test]# tar zxvf /root/etc.tar.gz #解压缩
[root@localhost test]# tar xvf /root/etc.tar.gz #解压缩
例2:创建.tar.bz2包
语法: #tar jcvf newfile.tar.bz2 SOURCE
[root@xuegod63 ~]# tar -jcvf ~/etc.tar.bz2 /etc
[root@xuegod63 ~]# tar -jxvf ~/etc.tar.bz2 #解压缩
[root@xuegod63 ~]# tar -xvf ~/etc.tar.bz2 #解压缩
[root@xuegod63 ~]# tar jxvf ~/etc.tar.bz2 -C /opt #解压到opt目录下
例3:创建.tar.xz包
[root@xuegod63 ~]# tar -Jcvf ~/etc.tar.xz /etc
[root@xuegod63 ~]# tar -Jxvf ~/etc.tar.xz #tar.xz 这类包,解压缩
[root@xuegod63 ~]# tar -xvf ~/etc.tar.xz
对比三种压缩方式后压缩比例:
[root@xuegod63 ~]# time tar zcf /root/etc.tar.gz /etc
[root@xuegod63 ~]# time tar jcf /root/etc.tar.bz2 /etc
[root@xuegod63 ~]# time tar Jcf /root/etc.tar.xz /etc
[root@xuegod63 ~]# ll -h etc.tar* (*为通配符,代表任意字符任意次)
-rw-r--r-- 1 0 root 28M 5月 10 12:10 etc.tar
-rw-r--r-- 1 0 root 8.7M 5月 10 12:14 etc.tar.bz2 #常用
-rw-r--r-- 1 0 root 9.8M 5月 10 12:11 etc.tar.gz #常用
-rw-r--r-- 1 0 root 7.0M 5月 10 12:16 etc.tar.xz #这个压缩比例最高,压缩的时间是最长
查看源文件大小
[root@xuegod63 ~]# du -sh /etc
31M /etc
etc.tar包为28M ,实际几乎没怎么压缩。xz格式化为7.0M,传输的时候效率提高很多。
扩展:
解压指定文件到指定目录
[root@xuegod62 ~]# tar -C /opt -xvf boot.tar.gz boot/grub2/grub.cfg
解压某一类型文件到指定目录
--wildccards 文件名匹配,使用通配符
[root@xuegod62 ~]# tar -tvf boot.tar.gz
[root@xuegod62 ~]# tar -C /opt -xvf boot.tar.gz --wildcards *.mo
排除指定文件并解压
[root@xuegod62 ~]# rm -rf /opt/boot
[root@xuegod62 ~]# tar -C /opt -xvf boot.tar.gz boot/grub2 --exclude=boot/grub2/i386-pc
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流