文件归档便是将一组拥有相同属性的文件或目录组合到一个文件中,并重新存储它们到一个专门的目录中,以便往后在须要时进行查阅。比方说,很多情形下,我们的系统日志是有轮询的,旧的日志,会在一定的韶光内会被自动删除,我们须要常常对日志进行归档,以保存旧的日志,以便我们在须要时进行查阅。
利用 tar 命令归档文件或目录tar 可以将多个文件打包成一个文件,以便在网络上传输和归档,当你须要时,可以将他们提取出来。该归档文件还可以利用 gzip、bzip2 和 xz 压缩办法进行文件压缩。
利用 tar 命令对 /var/log/ 文件里面的 log 进行归档,个中 c 选项表示创建一个归档文件,f 选项用于指定归档文件的名称;

[root@websvr ~]# tar -cf log.tar /var/log/tar: Removing leading `/' from member names[root@websvr ~]# lslog.tar[root@websvr ~]#
在实行归档时,如果归档的目录包含根目录 ” / " ,则在归档的时候,会自定删除根目录,这样做的目的便是防止在提取文件时发生误操作,覆盖原文件,确保提取文件时,始终会是在当前目录。
如果你想在归档过程中显示归档的细节,归档了哪些文件,你可以通过添加 v 选项,来实现这一目的;
[root@websvr~]#tar-cvflog1.tar/var/log/tar:Removingleading`/'frommembernames/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...outputomitted...
如果你想查看归档文件中的详细内容,你可以利用 t 选项来查看 log.tar 文件中的内容;
[root@websvr~]#tar-tflog.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...outputomitted...
当须要时,我们可以利用 x 选项来提取 log.tar 中的文件
[root@websvr~]#mkdirlog[root@websvr~]#cdlog/[root@websvrlog]#tar-xf~/log.tar[root@websvrlog]#lsvar[root@websvrlog]#lsvar/log[root@websvrlog]#lsvar/log/anacondacrondnf.log.2httpdmessages-20201018spoolerauditcron-20201011dnf.log.3insights-clientmessages-20201025spooler-20201011boot.logcron-20201018dnf.log.4journalmessages-20201101spooler-20201018boot.log-20200622cron-20201025dnf.rpm.loglastlogphp-fpmspooler-20201025boot.log-20200629cron-20201101ecs_network_optimization.logmaillogprivatespooler-20201101boot.log-20200706dnf.librepo.logeximmaillog-20201011sasssdbtmpdnf.librepo.log-20201011grafanamaillog-20201018sambatunedbtmp-20201101dnf.librepo.log-20201018hawkey.logmaillog-20201025securewtmpchronydnf.librepo.log-20201025hawkey.log-20201011maillog-20201101secure-20201011zabbixcloudinit-deploy.logdnf.librepo.log-20201101hawkey.log-20201018mariadbsecure-20201018cloud-init.logdnf.loghawkey.log-20201025messagessecure-20201025cloud-init-output.logdnf.log.1hawkey.log-20201101messages-20201011secure-20201101
压缩存档文件
当我们要归档的文件比较大时,或者我们想在网络上传输我们的归档文件,这个时候,我们须要在归档文件的时候,对文件进行一个压缩,从而减少对带宽的哀求。
tar 支持三种压缩办法:
gzip 压缩速率最快,利用最广泛,但压缩率相对较低bzip2 压缩文件常日会比 gzip 要小,但利用没有 gzip广泛xz 相比拟较新,但压缩率是三个中最高的创建压缩文件选项:
通过 -z 选项创建 gzip 办法的压缩文件(.tar.gz 或 .tgz)通过 -j 选项创建 bzip 办法的压缩文件(.tar.bz2)利用 -J 选项创建 xz 办法的压缩文件(.tar.xz)创建 gzip 格式的压缩存档
[root@websvr~]#tar-czflog.tar.gz/var/log/tar:Removingleading`/'frommembernames[root@websvr~]#ls-lhlog-rw-r--r--1rootroot760MNov608:16log.tar-rw-r--r--1rootroot97MNov608:15log.tar.gz
通过比较创造压缩后的文件,比之前的小
资源利用率
top-16:54:46up16:18,2users,loadaverage:0.80,0.59,0.30Tasks:120total,2running,118sleeping,0stopped,0zombie%Cpu(s):35.3us,11.0sy,0.0ni,43.1id,0.0wa,0.0hi,0.1si,10.4stMiBMem:1829.0total,80.7free,179.5used,1568.8buff/cacheMiBSwap:0.0total,0.0free,0.0used.1486.0availMemPIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND1952student200460413961108S83.60.10:11.27gzip1951student20024717228842680R17.70.20:02.37tar39root200000S2.70.00:04.20kswapd01755root200000I0.10.00:00.22kworker/0:0-events
压缩文件所需的韶光(30 个文件,每个文件 100M)
[root@websvr~]#timetar-czftest.tar2.gztest_filereal0m29.983suser0m23.198ssys0m7.041s
创建 bzip2 格式的压缩存档
[root@websvr~]#tar-cjflog.tar.bz2/var/log/tar:Removingleading`/'frommembernames[root@websvr~]#ls-lhlog-rw-r--r--1rootroot760MNov608:16log.tar-rw-r--r--1rootroot81MNov608:21log.tar.bz2-rw-r--r--1rootroot97MNov608:15log.tar.gz
压缩率虽然比 gzip 的高,但高的不是很多
资源利用率
top-16:52:56up16:16,2users,loadaverage:0.44,0.46,0.22Tasks:120total,4running,116sleeping,0stopped,0zombie%Cpu(s):43.7us,7.2sy,0.0ni,43.8id,0.1wa,0.0hi,0.0si,5.2stMiBMem:1829.0total,71.2free,186.4used,1571.4buff/cacheMiBSwap:0.0total,0.0free,0.0used.1479.0availMemPIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND1949student2001378485921228R93.00.50:13.67bzip21948student20024717227322528R9.90.10:01.54tar39root200000S1.10.00:03.22kswapd0448root200000S0.10.00:01.60xfsaild/vda11950root200000I0.10.00:00.01kworker/1:2-mm_percp+
压缩文件所需的韶光(30 个文件,每个文件 100M)
[root@websvr~]#timetar-cjftest.tar3.bz2test_filereal1m10.511suser1m1.819ssys0m10.762s
创建 xz 格式的压缩存档
[root@websvr~]#tar-cJflog.tar.xz/var/log/tar:Removingleading`/'frommembernames[root@websvr~]#ls-lhlog-rw-r--r--1rootroot760MNov608:16log.tar-rw-r--r--1rootroot81MNov608:21log.tar.bz2-rw-r--r--1rootroot97MNov608:15log.tar.gz-rw-r--r--1rootroot50MNov608:29log.tar.xz
通过比较,xz 格式的压缩比最高,但压缩的韶光也是最长的
资源的利用率
top-16:51:36up16:15,2users,loadaverage:0.94,0.53,0.22Tasks:120total,4running,116sleeping,0stopped,0zombie%Cpu(s):45.2us,5.4sy,0.0ni,44.0id,0.0wa,0.0hi,0.0si,5.4stMiBMem:1829.0total,62.9free,259.0used,1507.1buff/cacheMiBSwap:0.0total,0.0free,0.0used.1406.3availMemPIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND1946student200316704812442200R97.54.31:39.23xz1945student20024717228282620R9.30.20:09.75tar39root200000S0.80.00:02.98kswapd030root3919000S0.50.00:00.57khugepaged1942root200000R0.10.00:00.31kworker/1:0-events
压缩文件所需的韶光(30 个文件,每个文件 100M)
[root@websvr~]#timetar-cJftest.tar3.xztest_filereal1m49.429suser1m40.588ssys0m16.924s
总结
对付归档文件的压缩,压缩率最高的是 xz 格式的,但它也是用时最多,花费资源最多的;韶光最快的是 gzip 并且它也是花费资源最少的,但是它的压缩率不是没有其余两个高;bzip2 不管是韶光和资源的花费,还是压缩率,在这三个都是居中,不过,对付韶光,它比较 xz 少的不是很多,压缩率,比较 gzip 也不是很高,所有适用的场景不是很多。