Tar(TapeARchive,磁带归档的缩写,LCTT译注:最初设计用来打包磁带上的文件,现在我们多用它来备份一个分区或一些重要的目录)是使用最广泛的类Unix系统中的命令将多个文件或目录归档到一个归档文件中,归档文件可以使用gzip或bzip2等技术进一步压缩。换句话说,tar命令也可以用于备份:先将多个文件和目录归档到一个tar文件或归档中,然后在需要时提取tar文件中的文件和目录。本文介绍了17个有用的tar示例。tar命令的语法如下:#tar下面列出了tar命令中一些常用的选项:--delete:从归档文件(不是磁带)中删除-r,--append:追加文件到存档中-t,--list:列出存档文件中包含的内容--test-label:测试存档文件标签并退出-u,--update:将更新后的文件追加到存档文件中-x,--extract,--get:释放??归档文件中的文件和目录-C,--directory=DIR:在执行归档操作之前将工作目录更改为DIR-f,--file=ARCHIVE:指定(待创建或现有)archive_name-j,--bip2:对存档使用bzip2压缩-J,--xz:对存档使用xz压缩-p,--preserve-permissions:保留原始文件的访问权限-v,--verbose:显示命令的完整执行-z,gzip:对存档使用gzip压缩注意:tar命令选项中的连字符-是可选的,因为tar命令更受旧UNIX风格的影响)。示例1:创建tar存档现在让我们创建一个tar文件,将/etc/目录和/root/anaconda-ks.cfg文件打包到其中。[root@linuxtechi~]#tar-cvfmyarchive.tar/etc/root/anaconda-ks.cfg上面的命令会在当前目录创建一个名为“myarchive”的tar文件,包括/etc/目录和/root/anaconda-ks.cfg文件。其中,-c选项表示创建一个tar文件,-v选项用于将tar的详细过程输出到屏幕上,-f选项用于指定归档文件名。[root@linuxtechi~]#ls-lmyarchive.tar-rw-r--r--.1rootroot22947840Sep700:24myarchive.tar[root@linuxtechi~]#Example2:使用tar命令列出存档的内容–t选项可以快速列出文件中包含的内容,而无需释放其中的文件。[root@linuxtechi~]#tar-tvfmyarchive.tar列出了tar文件中指定的文件和目录。以下命令尝试查看anaconda-ks.cfg文件是否存在于tar文件中。[root@linuxtechi~]#tar-tvfmyarchive.tarroot/anaconda-ks.cfg-rw------root/root9532016-08-2401:33root/anaconda-ks.cfg[root@linuxtechi~]#example3:将文件附加到归档(tar)文件-r选项用于将文件附加到现有的tar文件。让我们将/etc/fstab添加到data.tar。[root@linuxtechi~]#tar-rvfdata.tar/etc/fstab注意:压缩后的tar文件不能追加文件。示例4:从tar文件中提取文件和目录-x选项用于提取tar文件中的文件和目录。让我们提取上面创建的tar文件的内容。[root@linuxtechi~]#tar-xvfmyarchive.tar这个命令会释放当前目录下myarchive.tar文件的内容。示例5:将tar文件发布到指定目录如果要将tar文件的内容发布到指定的文件夹或目录,使用-C选项后跟指定的文件路径即可。[root@linuxtechi~]#tar-xvfmyarchive.tar-C/tmp/例6:释放tar文件中的指定文件或目录假设只需要将tar文件中的anaconda-ks.cfg释放到/tmp目录。语法如下:#tar–xvf{tar-file}{file-to-be-extracted}-C{path-where-to-extract}[root@linuxtechitmp]#tar-xvf/root/myarchive.tarroot/anaconda-ks.cfg-C/tmp/root/anaconda-ks.cfg[root@linuxtechitmp]#ls-l/tmp/root/anaconda-ks.cfg-rw------.1rootroot953Aug2401:33/tmp/root/anaconda-ks.cfg[root@linuxtechitmp]#Example7:创建并压缩归档文件(.tar.gz或.tgz)假设我们需要打包/etc和/opt文件夹并用压缩工具。这可以在tar命令中使用-z选项来实现。此类tar文件的扩展名为.tar.gz或.tgz。[root@linuxtechi~]#tar-zcpvfmyarchive.tar.gz/etc//opt/或[root@linuxtechi~]#tar-zcpvfmyarchive.tgz/etc//opt/例8:创建并压缩归档文件(.tar.bz2or.tbz2)假设我们需要打包/etc和/opt文件夹并用bzip2压缩它们。这可以使用tar命令的-j选项来实现。这样的tar文件可以有扩展名.tar.bz2或.tbz。[root@linuxtechi~]#tar-jcpvfmyarchive.tar.bz2/etc//opt/或[root@linuxtechi~]#tar-jcpvfmyarchive.tbz2/etc//opt/例9:排除指定文件或类型后创建tar文件在创建tar文件时,使用tar命令中的–exclude选项排除指定的文件或类型。假设您希望在创建压缩的tar文件时排除.html文件。[root@linuxtechi~]#tar-zcpvfmyarchive.tgz/etc//opt/--exclude=*.html例10:列出.tar.gz或.tgz文件的内容使用-t选项查看.tar。gz或.tgz文件内容。如下:[root@linuxtechi~]#tar-tvfmyarchive.tgz|more..........................................drwxr-xr-xroot/root02016-09-0708:41etc/-rw-r--r--root/root5412016-08-2401:23etc/fstab-rw-------root/root02016-08-2401:23etc/crypttablrwxrwxrwxroot/root02016-08-2401:23etc/mtab->/proc/self/mounts-rw-r--r--root/root1492016-09-0708:41etc/resolv.confdrwxr-xr-xroot/root02016-09-0603:55etc/pki/drwxr-xr-xroot/root02016-09-0603:15etc/pki/rpm-gpg/-rw-r--r--root/root16902015-12-0904:59etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7-rw-r--r--root/root10042015-12-0904:59etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Debug-7-rw-r--r--root/root16902015-12-0904:59etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Testing-7-rw-r--r--root/root31402015-09-1506:53etc/pki/rpm-gpg/RPM-GPG-KEY-foreman..............................................................示例11:列出.tar.bz2或.tbz2文件内容使用-t选项查看.tar.bz2或.tbz2文件的内容。如下:[root@linuxtechi~]#tar-tvfmyarchive.tbz2|more.......................................................rwxr-xr-xroot/root02016-08-2401:25etc/pki/java/lrwxrwxrwxroot/root02016-08-2401:25etc/pki/java/cacerts->/etc/pki/ca-trust/extracted/java/cacertsdrwxr-xr-xroot/root02016-09-0602:54etc/pki/nssdb/-rw-r--r--root/root655362010-01-1215:09etc/pki/nssdb/cert8.db-rw-r--r--root/root92162016-09-0602:54etc/pki/nssdb/cert9.db-rw-r--r--root/root163842010-01-1216:21etc/pki/nssdb/key3.db-rw-r--r--root/root112642016-09-0602:54etc/pki/nssdb/key4.db-rw-r--r--root/root4512015-10-2109:42etc/pki/nssdb/pkcs11.txt-rw-r--r--root/root163842010-01-1215:45etc/pki/nssdb/secmod.dbdrwxr-xr-xroot/root02016-08-2401:26etc/pki/CA/drwxr-xr-xroot/root02015-06-2908:48etc/pki/CA/certs/drwxr-xr-xroot/root02015-06-2908:48etc/pki/CA/crl/drwxr-xr-xroot/root02015-06-2908:48etc/pki/CA/newcerts/drwx-----root/root02015-06-2908:48etc/pki/CA/private/drwx------root/root02015-11-2006:34etc/pki/rsyslog/drwxr-xr-xroot/root02016-09-0603:44etc/pki/pulp/.........................................................................示例12:提取.tar.gz或.tgz文件使用-x和-z选项解压缩.tar.gz或.tgz文件,如下所示:[root@linuxtechi~]#tar-zxpvfmyarchive.tgz-C/tmp//tmp目录。注意:目前的tar命令在执行解压动作之前会自动检查文件的压缩类型,也就是说我们可以在不指定文件压缩类型的情况下使用tar命令。如下:[root@linuxtechi~]#tar-xpvfmyarchive.tgz-C/tmp/Example13:Extractinga.tar.bz2or.tbz2file使用-j和-x选项提取一个.tar.bz2或.tar.bz2文件。tbz2文件。如下:[root@linuxtechi~]#tar-jxpvfmyarchive.tbz2-C/tmp/或[root@linuxtechi~]#tarxpvfmyarchive.tbz2-C/tmp/例14:总有一些实时场景需要使用定时备份的tar命令我们将指定的文件和目录打包,达到每日备份的目的。假设您需要每天备份整个/opt目录,您可以使用tar命令创建一个cron作业来完成它。如下:[root@linuxtechi~]#tar-zcvfoptbackup-$(date+%Y-%m-%d).tgz/opt/为以上命令创建cron任务。示例15:使用-T和-X创建一个压缩归档文件想象这样一个场景:将要归档压缩的文件和目录记录到一个文件中,然后将这个文件作为tar命令的传入参数来完成归档任务;有时在归档压缩前需要排除上述文件中记录的特定路径。使用tar命令的-T选项指定此输入文件,使用-X选项指定要包含的文件列表。假设要归档/etc、/opt、/home目录,并排除/etc/sysconfig/kdump和/etc/sysconfig/foreman文件,可以创建/root/tar-include和/root/tar-exclude并输入分别如下内容:[root@linuxtechi~]#cat/root/tar-include/etc/opt/home[root@linuxtechi~]#[root@linuxtechi~]#cat/root/tar-exclude/etc/sysconfig/kdump/etc/sysconfig/foreman[root@linuxtechi~]#运行以下命令来创建压缩包。[root@linuxtechi~]#tarzcpvfmybackup-$(date+%Y-%m-%d).tgz-T/root/tar-include-X/root/tar-exclude示例16:查看.tar、.tgz和.tbz2文件的大小使用以下命令查看(压缩的)tar文件的大小。[root@linuxtechi~]#tar-czf-data.tar|wc-c427[root@linuxtechi~]#tar-czf-mybackup-2016-09-09.tgz|wc-c37956009[root@linuxtechi~]#tar-czf-myarchive.tbz2|wc-c30835317[root@linuxtechi~]#例17:将一个巨大的tar文件分割成多个小文件在类Unix系统中,使用split命令将一个大文件分割成多个小文件。大容量的tar当然也可以使用此命令进行拆分。假设“mybackup-2016-09-09.tgz”需要拆分成每个6MB的小文件。语法:split-b.“prefix-name”[root@linuxtechi~]#split-b6Mmybackup-2016-09-09.tgzmybackup-parts以上命令mybackup-2016-09-09.tgz文件会在当前目录下被分成几个6MB的小文件,文件名为mybackup-partsaa~mybackup-partsag。如果你想在拆分文件后使用数字而不是字母,你可以在上面的拆分命令中使用-d选项。[root@linuxtechi~]#ls-lmybackup-parts*-rw-r--r--.1rootroot6291456Sep1003:05mybackup-partsaa-rw-r--r--.1rootroot6291456Sep1003:05mybackup-partsab-rw-r--r--.1rootroot6291456Sep1003:05mybackup-partsac-rw-r--r--.1rootroot6291456Sep1003:05mybackup-partsad-rw-r--r--.1rootroot6291456Sep1003:05mybackup-partsae-rw-r--r--.1rootroot62914056:Sep105605mybackup-partsaf-rw-r--r--.1rootroot637219Sep1003:05mybackup-partsag[root@linuxtechi~]#然后将这些拆分后的文件通过网络传输到其他服务器上,然后就可以合并成一个tar文件了,如如下:[root@linuxtechi~]#catmybackup-partsa*>mybackup-2016-09-09.tgz[root@linuxtechi~]#文笔,希望你喜欢这些tar命令的不同例子。随时发表评论并分享您的想法。
tar命令的17个实用例子相关文章