写点什么

使用 tar 命令进行文件的归档和压缩

用户头像
学神来啦
关注
发布于: 刚刚

归档和压缩文件

归档和压缩文件的好处:节约硬盘的资源 ,加快文件传输速率 tar 命令 作用:打包、压缩文件



这幅图的就是说 123456 这几个文件打包成了一个 a.tar 文件,但是这个 a.tar 还是很大,继续用 gzip 进行压缩,变成了一个更小的压缩文件。


作用:打包、压缩文件;tar 文件是把几个文件和(或)目录集合在一个文件里,该存档文件可以通过使用 gzip、bzip2 或 xz 等压缩工具进行行压缩后传输


查看 man tar 这里 man 不是男人的意思,是 manual 手册的缩写用法:tar [OPTION...] [FILE]...参数:


-c  create  创建文件-x  -extract [ˈekstrækt]   提取  解压还原文件-v  --verbose  显示执行详细过程-f  --file  指定备份文件-t  --list  列出压缩包中包括哪些文件,不解包,查看包中的内容-C  (大写)--directory
复制代码


指定解压位置

示例 1:给/boot/grub2 目录 打包

[root@xuegod63 ~]#   tar -cvf grub.tar /boot/grub2/    # tar 的参数前可以不使用‘-’[root@xuegod63 ~]#   tar cvf grub.tar /boot/grub2/[root@xuegod63 ~]# tar cf grub.tar /boot/grub2/
复制代码


tar: 从成员名中删除开头的“/”(就是把/根路径删除掉了,就变成了 boot/grub2 相对路径了,解压时会解压到当前目录,如果不删除,那就是/boot/grub2,当解压的时候就是绝对路径了,就会覆盖系统中此路径的文件)


[root@xuegod63 ~]# tar -cf grub.tar /boot/grub2/
复制代码


tar: 从成员名中删除开头的“/”


[root@xuegod63 ~]# ls grub.tar[root@xuegod63 ~]# tar xvf grub.tar #解压缩boot/grub2/boot/grub2/device.map[root@xuegod63 ~]# ls  boot    #得到 boot  目录grub2
复制代码

示例 2:把两个目录或目录+文件打包成一个归档包:

root@xuegod63 ~]# mkdir ./back[root@xuegod63 ~]# cp /etc/passwd ./back/[root@xuegod63 ~]# tar -cvf back.tar /boot/grub   /root/back/ /etc/passwdtar:  从成员名中删除开头的“/”-rw-r--r-- root/root  1024 2020-06-28 19:46 boot/grub2/grubenv  ###输出内容-rw-r--r-- root/root  5130 2020-06-28 19:46 boot/grub2/grub.cfgdrwxr-xr-x root/root   0 2020-07-03 14:23 root/back/-rw-r--r-- root/root    2735 2020-07-03 14:23 root/back/passwd-rw-r--r-- root/root    2735 2020-06-28 19:49 etc/passwd
复制代码

例 3:不解包,查看 tar 中的内容:

[root@xuegod63 ~]# tar -tvf back.tar             # List all files in archive.tar verbosely.
复制代码

例 4:对比加 v 的效果

root@xuegod63 ~]# tar -xf back.tar[root@xuegod63 ~]# tar -xvf back.tarboot/grub/boot/grub/splash.xpm.gz
复制代码

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 /etc31M /etc
复制代码


etc.tar 包为 28M ,实际几乎没怎么压缩。xz 格式化为 7.0M,传输的时候效率提高很多。


今天就为大家分享到这,下面有惊喜哦。



想要免费领取这本书籍加我发送信息:k8s 书籍 即可免费领取此书籍。



发布于: 刚刚阅读数: 2
用户头像

学神来啦

关注

还未添加个人签名 2021.06.02 加入

10年Linux使用及管理经验,7年IT在线教育培训经验。精通Linux、Python、思科、C++、安全渗透等技术。曾任职国内知名互联网公司高级运维架构师、运维总监。对基于Linux下开源程序Openstack、Docker、K8S、DevOps、

评论

发布
暂无评论
使用tar 命令进行文件的归档和压缩