利用 tar 进行文件归档
  

cyq 4761人觉得有帮助

{{ttag.title}}
  1. <b>什么是文件归档?</b><div align="left"><font color="rgb(61, 70, 77)"><font face="PingFangSC-Regular, Verdana, Arial, 微软雅黑, 宋体"><font style="font-size: 16px">文件归档就是将一组拥有相同属性的文件或目录组合到一个文件中,并从新存储它们到一个专门的目录中,以便以后在需要时进行查阅。比方说,很多情况下,我们的系统日志是有轮询的,旧的日志,会在一定的时间内会被自动删除,我们需要经常对日志进行归档,以保存旧的日志,以便我们在需要时进行查阅。</font></font></font></div><b>使用 tar 命令归档文件或目录</b><div align="left"><font color="rgb(61, 70, 77)"><font face="PingFangSC-Regular, Verdana, Arial, 微软雅黑, 宋体"><font style="font-size: 16px"><b>tar</b> 可以将多个文件打包成一个文件,以便在网络上传输和归档,当你需要时,可以将他们提取出来。该归档文件还可以使用 <b>gzip</b>、<b>bzip2</b> 和 <b>xz</b> 压缩方式进行文件压缩。</font></font></font></div><div align="left"><font color="rgb(61, 70, 77)"><font face="PingFangSC-Regular, Verdana, Arial, 微软雅黑, 宋体"><font style="font-size: 16px">使用 <b>tar</b> 命令对 <b>/var/log/</b> 文件里面的 log 进行归档,其中 <b>c</b> 选项表示创建一个归档文件,<b>f</b> 选项用于指定归档文件的名称;</font></font></font></div>[root@websvr ~]# tar -cf log.tar /var/log/tar: Removing leading `/' from member names[root@websvr ~]# lslog.tar[root@websvr ~]# <div align="left"><font color="rgb(61, 70, 77)"><font face="PingFangSC-Regular, Verdana, Arial, 微软雅黑, 宋体"><font style="font-size: 16px">* 在执行归档时,如果归档的目录包含根目录 ” <b>/</b> ” ,则在归档的时候,会自定删除根目录,这样做的目的就是防止在提取文件时发生误操作,覆盖原文件,确保提取文件时,始终会是在当前目录。</font></font></font></div><div align="left"><font color="rgb(61, 70, 77)"><font face="PingFangSC-Regular, Verdana, Arial, 微软雅黑, 宋体"><font style="font-size: 16px">如果你想在归档过程中显示归档的细节,归档了哪些文件,你可以通过添加 <b>v</b> 选项,来实现这一目的;</font></font></font></div>[root@websvr ~]# tar -cvf log1.tar /var/log/tar: Removing leading `/' from member names/var/log//var/log/lastlog/var/log/private//var/log/wtmp/var/log/samba//var/log/samba/old//var/log/audit//var/log/audit/audit.log.4/var/log/audit/audit.log.3/var/log/audit/audit.log.2/var/log/audit/audit.log.1/var/log/audit/audit.log/var/log/spooler-20201101/var/log/sssd//var/log/sssd/sssd_implicit_files.log-20200705.gz/var/log/sssd/sssd_nss.log-20200705.gz/var/log/sssd/sssd_implicit_files.log-20200712... output omitted ...<div align="left"><font color="rgb(61, 70, 77)"><font face="PingFangSC-Regular, Verdana, Arial, 微软雅黑, 宋体"><font style="font-size: 16px">如果你想查看归档文件中的具体内容,你可以使用 <b>t</b> 选项来查看 <b>log.tar</b> 文件中的内容;</font></font></font></div>[root@websvr ~]# tar -tf log.tarvar/log/var/log/lastlogvar/log/private/var/log/wtmpvar/log/samba/var/log/samba/old/var/log/audit/var/log/audit/audit.log.4var/log/audit/audit.log.3var/log/audit/audit.log.2var/log/audit/audit.log.1var/log/audit/audit.logvar/log/spooler-20201101var/log/sssd/var/log/sssd/sssd_implicit_files.log-20200705.gzvar/log/sssd/sssd_nss.log-20200705.gzvar/log/sssd/sssd_implicit_files.log-20200712... output omitted ...<div align="left"><font color="rgb(61, 70, 77)"><font face="PingFangSC-Regular, Verdana, Arial, 微软雅黑, 宋体"><font style="font-size: 16px">当需要时,我们可以使用 <b>x</b> 选项来提取 <b>log.tar</b> 中的文件</font></font></font></div>[root@websvr ~]# mkdir log[root@websvr ~]# cd log/[root@websvr log]# tar -xf ~/log.tar [root@websvr log]# lsvar[root@websvr log]# ls var/log[root@websvr log]# ls var/log/anaconda               cron                      dnf.log.2                     httpd              messages-20201018  spooleraudit                  cron-20201011             dnf.log.3                     insights-client    messages-20201025  spooler-20201011boot.log               cron-20201018             dnf.log.4                     journal            messages-20201101  spooler-20201018boot.log-20200622      cron-20201025             dnf.rpm.log                   lastlog            php-fpm            spooler-20201025boot.log-20200629      cron-20201101             ecs_network_optimization.log  maillog            private            spooler-20201101boot.log-20200706      dnf.librepo.log           exim                          maillog-20201011   sa                 sssdbtmp                   dnf.librepo.log-20201011  grafana                       maillog-20201018   samba              tunedbtmp-20201101          dnf.librepo.log-20201018  hawkey.log                    maillog-20201025   secure             wtmpchrony                 dnf.librepo.log-20201025  hawkey.log-20201011           maillog-20201101   secure-20201011    zabbixcloudinit-deploy.log   dnf.librepo.log-20201101  hawkey.log-20201018           mariadb            secure-20201018cloud-init.log         dnf.log                   hawkey.log-20201025           messages           secure-20201025cloud-init-output.log  dnf.log.1                 hawkey.log-20201101           messages-20201011  secure-20201101<b>压缩存档文件</b><div align="left"><font color="rgb(61, 70, 77)"><font face="PingFangSC-Regular, Verdana, Arial, 微软雅黑, 宋体"><font style="font-size: 16px">当我们要归档的文件比较大时,或者我们想在网络上传输我们的归档文件,这个时候,我们需要在归档文件的时候,对文件进行一个压缩,从而减少对带宽的要求。</font></font></font></div><div align="left"><font color="rgb(61, 70, 77)"><font face="PingFangSC-Regular, Verdana, Arial, 微软雅黑, 宋体"><font style="font-size: 16px">tar 支持三种压缩方式:</font></font></font></div><ul><li><font face="inherit"><b>gzip</b> 压缩速度最快,使用最广泛,但压缩率相对较低
  2. </font></li><li><font face="inherit"><div align="left"><font face="inherit"><b>bzip2</b> 压缩文件通常会比 gzip 要小,但使用没有 gzip广泛</font></div></font></li><li><font face="inherit"><div align="left"><font face="inherit"><b>xz</b> 相对比较新,但压缩率是三个中最高的</font></div></font>
  3. </li></ul><div align="left"><font color="rgb(61, 70, 77)"><font face="PingFangSC-Regular, Verdana, Arial, 微软雅黑, 宋体"><font style="font-size: 16px">创建压缩文件选项:</font></font></font></div><ul><li><font face="inherit">通过 <b>-z</b> 选项创建 gzip 方式的压缩文件(*.tar.gz 或 *.tgz)
  4. </font></li><li><font face="inherit"><div align="left"><font face="inherit">通过 <b>-j</b> 选项创建 bzip 方式的压缩文件(*.tar.bz2)</font></div></font></li><li><font face="inherit"><div align="left"><font face="inherit">使用 <b>-J</b> 选项创建 xz 方式的压缩文件(*.tar.xz)</font></div></font>
  5. </li></ul><div align="left"><font color="rgb(61, 70, 77)"><font face="PingFangSC-Regular, Verdana, Arial, 微软雅黑, 宋体"><font style="font-size: 16px"><b>创建 gzip 格式的压缩存档</b></font></font></font></div>[root@websvr ~]# tar -czf log.tar.gz /var/log/tar: Removing leading `/' from member names[root@websvr ~]# ls -lh log*-rw-r--r-- 1 root root 760M Nov  6 08:16 log.tar-rw-r--r-- 1 root root  97M Nov  6 08:15 log.tar.gz<ul><li><font face="inherit">通过比较发现压缩后的文件,比之前的小</font>
  6. </li></ul><div align="left"><font color="rgb(61, 70, 77)"><font face="PingFangSC-Regular, Verdana, Arial, 微软雅黑, 宋体"><font style="font-size: 16px">资源使用率</font></font></font></div>top - 16:54:46 up 16:18,  2 users,  load average: 0.80, 0.59, 0.30Tasks: 120 total,   2 running, 118 sleeping,   0 stopped,   0 zombie%Cpu(s): 35.3 us, 11.0 sy,  0.0 ni, 43.1 id,  0.0 wa,  0.0 hi,  0.1 si, 10.4 stMiB Mem :   1829.0 total,     80.7 free,    179.5 used,   1568.8 buff/cacheMiB Swap:      0.0 total,      0.0 free,      0.0 used.   1486.0 avail Mem   PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                1952 student   20   0    4604   1396   1108 S  83.6   0.1   0:11.27 gzip                   1951 student   20   0  247172   2884   2680 R  17.7   0.2   0:02.37 tar                      39 root      20   0       0      0      0 S   2.7   0.0   0:04.20 kswapd0                1755 root      20   0       0      0      0 I   0.1   0.0   0:00.22 kworker/0:0-events   <div align="left"><font color="rgb(61, 70, 77)"><font face="PingFangSC-Regular, Verdana, Arial, 微软雅黑, 宋体"><font style="font-size: 16px">压缩文件所需的时间(30 个文件,每个文件 100M)</font></font></font></div>[root@websvr ~]# time tar -czf test.tar2.gz test_file*real    0m29.983suser    0m23.198ssys 0m7.041s<div align="left"><font color="rgb(61, 70, 77)"><font face="PingFangSC-Regular, Verdana, Arial, 微软雅黑, 宋体"><font style="font-size: 16px"><b>创建 bzip2 格式的压缩存档</b></font></font></font></div>[root@websvr ~]# tar -cjf log.tar.bz2 /var/log/tar: Removing leading `/' from member names[root@websvr ~]# ls -lh log*-rw-r--r-- 1 root root 760M Nov  6 08:16 log.tar-rw-r--r-- 1 root root  81M Nov  6 08:21 log.tar.bz2-rw-r--r-- 1 root root  97M Nov  6 08:15 log.tar.gz<ul><li><font face="inherit">压缩率虽然比 gzip 的高,但高的不是很多</font>
  7. </li></ul><div align="left"><font color="rgb(61, 70, 77)"><font face="PingFangSC-Regular, Verdana, Arial, 微软雅黑, 宋体"><font style="font-size: 16px">资源使用率</font></font></font></div>top - 16:52:56 up 16:16,  2 users,  load average: 0.44, 0.46, 0.22Tasks: 120 total,   4 running, 116 sleeping,   0 stopped,   0 zombie%Cpu(s): 43.7 us,  7.2 sy,  0.0 ni, 43.8 id,  0.1 wa,  0.0 hi,  0.0 si,  5.2 stMiB Mem :   1829.0 total,     71.2 free,    186.4 used,   1571.4 buff/cacheMiB Swap:      0.0 total,      0.0 free,      0.0 used.   1479.0 avail Mem   PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                1949 student   20   0   13784   8592   1228 R  93.0   0.5   0:13.67 bzip2                  1948 student   20   0  247172   2732   2528 R   9.9   0.1   0:01.54 tar                      39 root      20   0       0      0      0 S   1.1   0.0   0:03.22 kswapd0                 448 root      20   0       0      0      0 S   0.1   0.0   0:01.60 xfsaild/vda1           1950 root      20   0       0      0      0 I   0.1   0.0   0:00.01 kworker/1:2-mm_percp+ <div align="left"><font color="rgb(61, 70, 77)"><font face="PingFangSC-Regular, Verdana, Arial, 微软雅黑, 宋体"><font style="font-size: 16px">压缩文件所需的时间(30 个文件,每个文件 100M)</font></font></font></div>[root@websvr ~]# time tar -cjf test.tar3.bz2 test_file*real    1m10.511suser    1m1.819ssys 0m10.762s<div align="left"><font color="rgb(61, 70, 77)"><font face="PingFangSC-Regular, Verdana, Arial, 微软雅黑, 宋体"><font style="font-size: 16px"><b>创建 xz 格式的压缩存档</b></font></font></font></div>[root@websvr ~]# tar -cJf log.tar.xz /var/log/tar: Removing leading `/' from member names[root@websvr ~]# ls -lh log*-rw-r--r-- 1 root root 760M Nov  6 08:16 log.tar-rw-r--r-- 1 root root  81M Nov  6 08:21 log.tar.bz2-rw-r--r-- 1 root root  97M Nov  6 08:15 log.tar.gz-rw-r--r-- 1 root root  50M Nov  6 08:29 log.tar.xz<ul><li><font face="inherit">通过比较,xz 格式的压缩比最高,但压缩的时间也是最长的</font>
  8. </li></ul><div align="left"><font color="rgb(61, 70, 77)"><font face="PingFangSC-Regular, Verdana, Arial, 微软雅黑, 宋体"><font style="font-size: 16px">资源的使用率</font></font></font></div>top - 16:51:36 up 16:15,  2 users,  load average: 0.94, 0.53, 0.22Tasks: 120 total,   4 running, 116 sleeping,   0 stopped,   0 zombie%Cpu(s): 45.2 us,  5.4 sy,  0.0 ni, 44.0 id,  0.0 wa,  0.0 hi,  0.0 si,  5.4 stMiB Mem :   1829.0 total,     62.9 free,    259.0 used,   1507.1 buff/cacheMiB Swap:      0.0 total,      0.0 free,      0.0 used.   1406.3 avail Mem   PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                1946 student   20   0  316704  81244   2200 R  97.5   4.3   1:39.23 xz                     1945 student   20   0  247172   2828   2620 R   9.3   0.2   0:09.75 tar                      39 root      20   0       0      0      0 S   0.8   0.0   0:02.98 kswapd0                  30 root      39  19       0      0      0 S   0.5   0.0   0:00.57 khugepaged             1942 root      20   0       0      0      0 R   0.1   0.0   0:00.31 kworker/1:0-events   <div align="left"><font color="rgb(61, 70, 77)"><font face="PingFangSC-Regular, Verdana, Arial, 微软雅黑, 宋体"><font style="font-size: 16px">压缩文件所需的时间(30 个文件,每个文件 100M)</font></font></font></div>[root@websvr ~]# time tar -cJf test.tar3.xz test_file*real    1m49.429suser    1m40.588ssys 0m16.924s<b>总结</b><div align="left"><font color="rgb(61, 70, 77)"><font face="PingFangSC-Regular, Verdana, Arial, 微软雅黑, 宋体"><font style="font-size: 16px">对于归档文件的压缩,压缩率最高的是 <b>xz</b> 格式的,但它也是用时最多,消耗资源最多的;时间最快的是 <b>gzip</b> 并且它也是消耗资源最少的,但是它的压缩率不是没有另外两个高; <b>bzip2</b> 不管是时间和资源的消耗,还是压缩率,在这三个都是居中,不过,对于时间,它相比 xz 少的不是很多,压缩率,相比 gzip 也不是很高,所有适用的场景不是很多。</font></font></font></div>
复制代码

打赏鼓励作者,期待更多好文!

打赏
1人已打赏

飞翔的苹果 发表于 2022-6-11 18:46
  
非常感谢分享,学习了
一个无趣的人 发表于 2022-6-13 09:39
  
楼主的文章图文并茂,清晰易懂,看完这波操作可以轻松上手了,如遇到问题再向楼主请教~
发表新帖
热门标签
全部标签>
每日一问
功能体验
技术笔记
新版本体验
技术咨询
2023技术争霸赛专题
干货满满
技术盲盒
标准化排查
产品连连看
GIF动图学习
信服课堂视频
安装部署配置
秒懂零信任
自助服务平台操作指引
技术晨报
深信服技术支持平台
答题榜单公布
卧龙计划
畅聊IT
答题自测
云计算知识
通用技术
安全攻防
每日一记
sangfor周刊
资源访问
排障笔记本
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
上网策略
测试报告
日志审计
问题分析处理
流量管理
运维工具
用户认证
原创分享
解决方案
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
迁移
社区帮助指南
地址转换
虚拟机
存储
加速技术
产品预警公告
玩转零信任
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
纪元平台
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选

本版版主

217
273
151

发帖

粉丝

关注

本版达人

皮皮虾·真

本周建议达人

郑州网络

本周分享达人

二进制网络

本周提问达人