Tar(TapeARchivelinux解压gz文件命令,磁带归档的简写,LCTT评注:最初设计用于将文件打包到磁带上,如今我们大都使用它来实现备份某个分区或则个别重要的目录)是类Unix系统中使用最广泛的命令,用于归档多个文件或目录到单个归档文件中,但是归档文件可以进一步使用gzip或则bzip2等技术进行压缩。换言之,tar命令也可以用于备份:先是归档多个文件和目录到一个单独的tar文件或归档文件,之后在须要之时将tar文件中的文件和目录释放下来。
本文将介绍tar的17个实用示例。
tar命令句型如下:
# tar
下边列出tar命令中一些常用的选项:
--delete:从归档文件(而非磁带)中删掉
-r,--append:将文件追加到归档文件中
-t,--list:列举归档文件中包含的内容
--test-label:测试归档文件卷标并退出
-u,--update:将已更新的文件追加到归档文件中
-x,--extract,--get:释放归档文件中文件及目录
-C,--directory=DIR:执行归档动作前变更工作目录到DIR
-f,--file=ARCHIVE:指定(即将创建或已存在的)归档文件名
-j,--bip2:对归档文件使用bzip2压缩
-J,--xz:对归档文件使用xz压缩
-p,--preserve-permissions:保留原文件的访问权限
-v,--verbose:显示命令整个执行过程
-z,gzip:对归档文件使用gzip压缩
注:在tar命令选项中的联接符-是可选的(LCTT评注:不用-也没事。这在GNU软件上面很罕见,大约是因为tar命令更多遭到古老的UNIX风格影响)。
示例1:创建一个tar归档文件
现今来创建一个tar文件,将/etc/目录和/root/anaconda-ks.cfg文件打包进去。
[root@linuxtechi ~]# tar -cvf myarchive.tar /etc /root/anaconda-ks.cfg
以上命令会在当前目录创建一个名为”myarchive”的tar文件,内含/etc/目录和/root/anaconda-ks.cfg文件。
其中,-c选项表示要创建tar文件,-v选项用于输出tar的详尽过程到屏幕上,-f选项则是指定归档文件名称。
[root@linuxtechi ~]# ls -l myarchive.tar
-rw-r--r--. 1 root root 22947840 Sep 7 00:24 myarchive.tar
[root@linuxtechi ~]#
示例2:列举归档文件中的内容
在tar命令中使用–t选项可以不用释放其中的文件就可以快速列举文件中包含的内容。
[root@linuxtechi ~]# tar -tvf myarchive.tar
列举tar文件中的指定的文件和目录。下述命令尝试查看anaconda-ks.cfg文件是否存在于tar文件中。
[root@linuxtechi ~]# tar -tvf myarchive.tar root/anaconda-ks.cfg
-rw------- root/root 953 2016-08-24 01:33 root/anaconda-ks.cfg
[root@linuxtechi ~]#
示例3:追加文件到归档(tar)文件中
-r选项用于向已有的tar文件中追加文件。下边来将/etc/fstab添加到data.tar中。
[root@linuxtechi ~]# tar -rvf data.tar /etc/fstab
注:在压缩过的tar文件中难以进行追加文件操作。
示例4:从tar文件中释放文件以及目录
-x选项用于释放出tar文件中的文件和目录。下边来释放上面创建的tar文件中的内容。
[root@linuxtechi ~]# tar -xvf myarchive.tar
这个命令会在当前目录中释放出myarchive.tar文件中的内容。
示例5:释放tar文件到指定目录
如果你想要释放tar文件中的内容到指定的文件夹或则目录,使用-C选项前面加上指定的文件的路径。
[root@linuxtechi ~]# tar -xvf myarchive.tar -C /tmp/
示例6:释放tar文件中的指定文件或目录
假定你只要释放tar文件中的anaconda-ks.cfg到/tmp目录。
句型如下:
# tar –xvf {tar-file } {file-to-be-extracted } -C {path-where-to-extract}
[root@linuxtechi tmp]# tar -xvf /root/myarchive.tar root/anaconda-ks.cfg -C /tmp/
root/anaconda-ks.cfg
[root@linuxtechi tmp]# ls -l /tmp/root/anaconda-ks.cfg
-rw-------. 1 root root 953 Aug 24 01:33 /tmp/root/anaconda-ks.cfg
[root@linuxtechi tmp]#
示例7:创建并压缩归档文件(.tar.gz或.tgz)
假定我们须要打包/etc和/opt文件夹,并用gzip工具将其压缩。可以在tar命令中使用-z选项来实现。这些tar文件的扩充名可以是.tar.gz或则.tgz。
[root@linuxtechi ~]# tar -zcpvf myarchive.tar.gz /etc/ /opt/
或
[root@linuxtechi ~]# tar -zcpvf myarchive.tgz /etc/ /opt/
示例8:创建并压缩归档文件(.tar.bz2或.tbz2)
假定我们须要打包/etc和/opt文件夹suse linux 下载,并使用bzip2压缩。可以在tar命令中使用-j选项来实现。这些tar文件的扩充名可以是.tar.bz2或则.tbz。
[root@linuxtechi ~]# tar -jcpvf myarchive.tar.bz2 /etc/ /opt/
或
[root@linuxtechi ~]# tar -jcpvf myarchive.tbz2 /etc/ /opt/
示例9:排除指定文件或类型后创建tar文件
创建tar文件时在tar命令中使用–exclude选项来排除指定文件或则类型。假定在创建压缩的tar文件时要排除.html文件。
[root@linuxtechi ~]# tar -zcpvf myarchive.tgz /etc/ /opt/ --exclude=*.html
示例10:列举.tar.gz或.tgz文件中的内容
使用-t选项可以查看.tar.gz或.tgz文件中内容。如下:
[root@linuxtechi ~]# tar -tvf myarchive.tgz | more
.............................................
drwxr-xr-x root/root 0 2016-09-07 08:41 etc/
-rw-r--r-- root/root 541 2016-08-24 01:23 etc/fstab
-rw------- root/root 0 2016-08-24 01:23 etc/crypttab
lrwxrwxrwx root/root 0 2016-08-24 01:23 etc/mtab -> /proc/self/mounts
-rw-r--r-- root/root 149 2016-09-07 08:41 etc/resolv.conf
drwxr-xr-x root/root 0 2016-09-06 03:55 etc/pki/
drwxr-xr-x root/root 0 2016-09-06 03:15 etc/pki/rpm-gpg/
-rw-r--r-- root/root 1690 2015-12-09 04:59 etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
-rw-r--r-- root/root 1004 2015-12-09 04:59 etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Debug-7
-rw-r--r-- root/root 1690 2015-12-09 04:59 etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Testing-7
-rw-r--r-- root/root 3140 2015-09-15 06:53 etc/pki/rpm-gpg/RPM-GPG-KEY-foreman
..........................................................
示例11:列举.tar.bz2或.tbz2文件中的内容
使用-t选项可以查看.tar.bz2或.tbz2文件中内容。如下:
[root@linuxtechi ~]# tar -tvf myarchive.tbz2 | more
........................................................
rwxr-xr-x root/root 0 2016-08-24 01:25 etc/pki/java/
lrwxrwxrwx root/root 0 2016-08-24 01:25 etc/pki/java/cacerts -> /etc/pki/ca-trust/extracted/java/cacerts
drwxr-xr-x root/root 0 2016-09-06 02:54 etc/pki/nssdb/
-rw-r--r-- root/root 65536 2010-01-12 15:09 etc/pki/nssdb/cert8.db
-rw-r--r-- root/root 9216 2016-09-06 02:54 etc/pki/nssdb/cert9.db
-rw-r--r-- root/root 16384 2010-01-12 16:21 etc/pki/nssdb/key3.db
-rw-r--r-- root/root 11264 2016-09-06 02:54 etc/pki/nssdb/key4.db
-rw-r--r-- root/root 451 2015-10-21 09:42 etc/pki/nssdb/pkcs11.txt
-rw-r--r-- root/root 16384 2010-01-12 15:45 etc/pki/nssdb/secmod.db
drwxr-xr-x root/root 0 2016-08-24 01:26 etc/pki/CA/
drwxr-xr-x root/root 0 2015-06-29 08:48 etc/pki/CA/certs/
drwxr-xr-x root/root 0 2015-06-29 08:48 etc/pki/CA/crl/
drwxr-xr-x root/root 0 2015-06-29 08:48 etc/pki/CA/newcerts/
drwx------ root/root 0 2015-06-29 08:48 etc/pki/CA/private/
drwx------ root/root 0 2015-11-20 06:34 etc/pki/rsyslog/
drwxr-xr-x root/root 0 2016-09-06 03:44 etc/pki/pulp/
..............................................................
示例12:解压.tar.gz或.tgz文件
使用-x和-z选项来解压.tar.gz或.tgz文件。如下:
[root@linuxtechi ~]# tar -zxpvf myarchive.tgz -C /tmp/
以上命令将tar文件解压到/tmp目录。
注:现在的tar命令会在执行解压动作前手动检测文件的压缩类型,这意味着我们在使用tar命令是可以不用指定文件的压缩类型。如下:
[root@linuxtechi ~]# tar -xpvf myarchive.tgz -C /tmp/
示例13:解压.tar.bz2或.tbz2文件
使用-j和-x选项来解压.tar.bz2或.tbz2文件。如下:
[root@linuxtechi ~]# tar -jxpvf myarchive.tbz2 -C /tmp/
或
[root@linuxtechi ~]# tar xpvf myarchive.tbz2 -C /tmp/
示例14:使用tar命令进行定时备份
总有一些实时场景须要我们对指定的文件和目录进行打包,已达到日常备份的目的。假定须要每晚备份整个/opt目录linux查看硬件信息,可以创建一个带tar命令的cron任务来完成。如下:
[root@linuxtechi ~]# tar -zcvf optbackup-$(date +%Y-%m-%d).tgz /opt/
为以上命令创建一个cron任务即可。
示例15:使用-T及-X创建压缩归档文件
想象这样一个场景:把想要归档和压缩的文件及目录记录到到一个文件,之后把这个文件当作tar命令的传入参数来完成归档任务;而有时侯则是须要排除前面提及的这个文件上面记录的特定路径后进行归档和压缩。
在tar命令中使用-T选项来指定该输入文件linux解压gz文件命令,使用-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 ~]# tar zcpvf mybackup-$(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 -c
427
[root@linuxtechi ~]# tar -czf - mybackup-2016-09-09.tgz | wc -c
37956009
[root@linuxtechi ~]# tar -czf - myarchive.tbz2 | wc -c
30835317
[root@linuxtechi ~]#
示例17:分割容积庞大的tar文件为多份小文件
类Unix系统中使用split命令来将大容积文件分割成小容积文件。大容积的tar其实也可以使用这个命令来进行分割。