本篇文章,我们将通过实例来学习linux下的tar命令。tar命令用于将多个文件和目录的存档创建为一个扩展名为tar的存档。tar可以使用gzip和bzip2技术进一步压缩档案。tar(磁带存档)用于从命令行创建和提取存档的磁带存档。Tar也被认为是命令行备份和恢复实用程序。基本语法#tar可选参数-c:创建一个新的压缩包-f:压缩包的文件名-t,–list:列出压缩包的内容-x,–extract,–get:从一个压缩包中提取文件archive-d,–diff,–compare:查找存档和文件系统之间的差异–delete:从存档中删除。-r,–append:将文件追加到存档的末尾-v:详细输出-u,–update:仅附加比archive-X中的副本更新的文件,–exclude-from=file:排除file-C中列出的模式,–directory=DIR:在执行任何操作之前更改为DIR。-j,–bzip2:通过压缩和提取存档bzip2-J,–xz:通过xz-z压缩和提取档案,–gzip:通过gzip压缩和提取档案注意:tar命令中的连字符(-)在使用选项时是可选的。(1)创建归档文件为/etc目录和/var/log/syslog文件创建归档文件#tar-cvfarchive.tar/etc/var/log/syslog上面的命令会创建一个名为Archivefile的文件对于achive.tar。存档包含/etc和/var/log/syslog目录下的所有文件和目录。在上面的命令中,-c选项用于创建tar文件,-v选项用于详细输出,-f选项用于指定存档名称。#ls-larchive.tar-rw-r--r--1rootroot12554240Oct708:25archive.tar#(2)列出归档文件的内容使用-t选项查看归档文件的内容tar文件,而内容未提取。#tar-tvfarchive.tar列出tar文件中的特定文件或目录。在下面的示例中,我们试图列出tar文件中是否存在var/log/syslog目录。#tar-tvfarchive.tarvar/log/syslog-rw-r-----syslog/adm9512152022-10-0708:18var/log/syslog#(3)Appendfiletoarchive-r选项到将文件附加或添加到现有存档。让我们通过运行命令#tar-rvfarchive.tar/var/log/auth.log将/var/log/auth.log文件添加到archive.tar存档,以通过运行命令#tar验证该文件是否已附加-tvfarchive.tarvar/log/auth.log-rw-r-----syslog/adm527902022-10-0708:30var/log/auth.log#Note:在压缩的tar文件中,我们无法追加文件或目录。(4)提取归档文件要提取归档文件,请在tar命令中使用-x选项,如下所示。#tar-xvfarchive.tar上面的命令会将archive.tar文件中的所有文件和目录解压到当前目录。(5)将压缩包解压到特定文件夹使用-C选项将压缩包解压到特定目录,后跟文件夹路径。如下图#tar-xvfarchive.tar-C/tmp/(6)从压缩包中提取特定文件假设我们要从压缩包中的/tmp文件夹中提取/etc/netplan/01-network-manager-all。yaml文件。语法:#tar-xvf{tar-file}{file-to-be-extracted}-C{path-where-to-extract}#tar-xvfarchive.taretc/netplan/01-network-manager-all。yamletc/netplan/01-network-manager-all.yaml##ls-letc/netplan/01-network-manager-all.yaml-rw-r--r--1rootroot104Aug912:55等/netplan/01-network-manager-all.yaml#(7)创建压缩包(gzip)假设我们要创建/etc和/opt/opt文件夹的压缩包,也想使用gzip工具压缩。这可以使用tar命令中的-z选项来实现。此类存档的扩展名为tar.gz或tgz#tar-zcpvfarchive.tar.gz/etc//opt/或#tar-zcpvfarchive.tgz/etc//opt/(8)创建并压缩存档(bzip2)假设我们要创建/etc和/opt/opt文件夹的存档,还想使用bzip2工具压缩它们。这可以使用tar命令中的-j选项来实现。此类存档的扩展名为tar.bz2或tbz2#tar-jcpvfarchive.tar.bz2/etc//opt/或#tar-jcpvfarchive.tbz2/etc//opt/(9)创建存档时排除特定文件类型在创建存档时,将--exclude选项与tar命令一起使用以排除特定文件类型。假设您想在创建压缩的tar文件时排除html文件类型#tar-zcpvfarchive.tgz/var//opt/--exclude=*.html(10)列出压缩存档的内容(tar.gz或tgz)使用-t选项列出扩展名为tar.gz或tgz的压缩存档的内容,如下所示#tar-tvfarchive.tgz|more(11)要列出压缩存档(tar.bz2或tbz2)的内容,请使用-t选项列出扩展名为tar.bz2或tbz2的压缩存档的内容,如下所示#tar-tvfarchive.tbz2|更多#tar-tvfarchive.tar.bz2|more(12)提取压缩档案(tar.gz或.tgz)使用-x和-z选项提取扩展名为tar.gz或tgz的压缩档案的内容,如下所示#tar-zxpvfarchive.tgz-C/tmp/上面的命令会将压缩包解压到/tmp目录下注意:tar命令会自动分析压缩文件类型,也就是说在tar命令中指定压缩类型是可选的。示例如下所示:#tar-xpvfarchive.tgz-C/tmp/(13)提取压缩档案(tar.bz2或.tbz2)使用-x和-j选项提取扩展名为tar.bz2的压缩文件或者tbz2归档文件的内容如下#tar-jxpvfarchive.tbz2-C/tmp/或者#tarxpvfarchive.tbz2-C/tmp/(14)使用tar命令安排备份在某些场景下我们不得不为特定文件和目录创建每日存档文件。假设我们每天都要备份整个/opt文件夹,这可以通过tar命令+计划任务来实现。一个例子是这样的:#tar-zcvfoptbackup-$(date+%Y-%m-%d).tgz/opt/然后为上面的命令创建一个计划任务延伸阅读:HowtoautomatetaskswithcrontabinLinux(15)使用-T和-X选项创建压缩归档文件在日常活动中,系统管理员可能需要在使用tar命令创建归档文件时排除和包含文件。这可以通过在tar命令中使用包含(-T)和排除(-X)文件来实现。假设我们要归档和压缩/etc、/opt和/home等目录,并要排除文件/etc/sysconfig/kdump和etc/etc/sysconfig/foreman首先,创建一个文本文件/root/tar-conclude和/root/tar-exclude并将以下内容放入适当的文件中。#cat/root/tar-include/etc/opt/home##cat/root/tar-exclude/etc/sysconfig/kdump/etc/sysconfig/foreman#现在,运行以下命令#tarzcpvfmybackup-$(date+%Y-%m-%d).tgz-T/root/tar-include-X/root/tar-exclude(16)查看.tar、.tgz、.tbz2文件的大小使用以下tar命令查看压缩档案#tar-czf-data.tar|wc-c427#tar-czf-存档.tgz|wc-c1450527##tar-czf-存档.tbz2|wc-c1206287(17)将大的tar文件拆分成小文件在类Linux操作系统上,可以使用split命令将大文件拆分成较小的文件,也可以使用Split命令将大档案拆分成较小的部分。假设我们想要将“bigarchive.tgz”文件拆分为每6MB的较小部分。语法:split-b.“prefix-name”#split-b6Mbigarchive.tgzbigarchive-parts#ls-lbigarchive-parts*-rw-r--r--1rootroot6291456Oct710:43bigarchive-partsaa-rw-r--r--1rootroot6291456Oct710:43bigarchive-partsab-rw-r--r--1rootroot6291456Oct710:43bigarchive-partsac-rw-r--r--1rootroot6291456Oct710:43bigarchive-partsad-rw-r--r--1rootroot6291456Oct710:43bigarchive-partsae-rw-r--r--1rootroot6291456Oct710:43bigarchive-partsaf-rw-r--r--1rootroot6291456Oct710:43bigarchive-partsag#Wecansend这些文件转移到其他服务器,然后使用下面的cat命令将所有文件合并成一个tar包#catbigarchive-parts*>bigarchive.tgz延伸阅读:Linux下CAT命令的16个例子我的开源项目课程-腾讯-cloud(酷瓜云课堂-gitee仓库)course-tencent-cloud(酷瓜云课堂-github仓库)