Linux“ tar ”代表磁带归档,大量Linux/Unix 系统管理员使用它来处理磁带驱动器备份。tar命令用于将文件和目录集合转换为高度压缩的归档文件,通常在Linux中称为tarballtargzipbzip。tar是最广泛使用的命令,用于创建压缩归档文件,并且可以轻松地从一个磁盘移动到另一个磁盘或机器到机器。

在本文中,我们将回顾和讨论各种tar命令示例,包括如何使用(tar,tar.gz和tar.bz2)压缩创建归档文件,如何提取归档文件,提取单个文件,查看文件内容,验证文件,添加文件或目录到存档文件,估计tar存档文件的大小等。

本指南的主要目的是提供各种tar命令示例,这些示例可能有助于您理解并成为tar归档操作的专家。

1.创建tar存档文件

以下示例命令将为当前工作目录中的目录/home/tecmint创建tar归档文件tecmint-14-09-12.tar。请参阅示例命令。

# tar -cvf tecmint-14-09-12.tar /home/tecmint/

/home/tecmint/
/home/tecmint/cleanfiles.sh
/home/tecmint/openvpn-2.1.4.tar.gz
/home/tecmint/tecmint-14-09-12.tar
/home/tecmint/phpmyadmin-2.11.11.3-1.el5.rf.noarch.rpm
/home/tecmint/rpmforge-release-0.5.2-2.el5.rf.i386.rpm

让我们讨论我们在上面的命令中用于创建tar归档文件的每个选项。

c - 创建新的.tar存档文件。
v - 详细显示.tar文件的进度。
f - 存档文件的文件名类型。

2.创建tar.gz存档文件

要创建压缩的gzip存档文件,我们使用选项z。例如,以下命令将为目录/home/MyImages创建压缩的MyImages-14-09-12.tar.gz文件。(注意:tar.gz和tgz都相似)。

# tar cvzf MyImages-14-09-12.tar.gz /home/MyImages
OR
# tar cvzf MyImages-14-09-12.tgz /home/MyImages

/home/MyImages/
/home/MyImages/Sara-Khan-and-model-Priyanka-Shah.jpg
/home/MyImages/RobertKristenviolent101201.jpg
/home/MyImages/Justintimerlake101125.jpg
/home/MyImages/Mileyphoto101203.jpg
/home/MyImages/JenniferRobert101130.jpg
/home/MyImages/katrinabarbiedoll231110.jpg
/home/MyImages/the-japanese-wife-press-conference.jpg
/home/MyImages/ReesewitherspoonCIA101202.jpg
/home/MyImages/yanaguptabaresf231110.jpg

3.创建tar.bz2存档文件
该BZ2功能和压缩比的大小,创建存档文件更小的gzip。所述BZ2压缩需要更多的时间来压缩并且与解压缩文件的gzip这需要更少的时间。要创建高度压缩的tar文件,我们使用选项j。以下示例命令将为目录/home/php创建Phpfiles-org.tar.bz2文件。(注意:tar.bz2和tbz与tb2类似)。

# tar cvfj Phpfiles-org.tar.bz2 /home/php
OR
# tar cvfj Phpfiles-org.tar.tbz /home/php
OR 
# tar cvfj Phpfiles-org.tar.tb2 /home/php

/home/php/
/home/php/iframe_ew.php
/home/php/videos_all.php
/home/php/rss.php
/home/php/index.php
/home/php/vendor.php
/home/php/video_title.php
/home/php/report.php
/home/php/object.html
/home/php/video.php

4. Untar tar存档文件

要解压缩或提取tar文件,只需使用选项x(提取)发出以下命令。例如,以下命令将解压缩当前工作目录中的文件public_html-14-09-12.tar。如果要在另一个目录中解压缩,请使用选项-C(指定目录)。

## Untar files in Current Directory ##
# tar -xvf public_html-14-09-12.tar

## Untar files in specified Directory ##
# tar -xvf public_html-14-09-12.tar -C /home/public_html/videos/

/home/public_html/videos/
/home/public_html/videos/views.php
/home/public_html/videos/index.php
/home/public_html/videos/logout.php
/home/public_html/videos/all_categories.php
/home/public_html/videos/feeds.xml

5.解压缩tar.gz存档文件

要解压缩tar.gz存档文件,只需运行以下命令即可。如果想在不同的目录中解压缩,只需使用选项-C和目录的路径,就像我们在上面的例子中所示。

# tar -xvf thumbnails-14-09-12.tar.gz

/home/public_html/videos/thumbnails/
/home/public_html/videos/thumbnails/katdeepika231110.jpg
/home/public_html/videos/thumbnails/katrinabarbiedoll231110.jpg
/home/public_html/videos/thumbnails/onceuponatime101125.jpg
/home/public_html/videos/thumbnails/playbutton.png
/home/public_html/videos/thumbnails/ReesewitherspoonCIA101202.jpg
/home/public_html/videos/thumbnails/snagItNarration.jpg
/home/public_html/videos/thumbnails/Minissha-Lamba.jpg
/home/public_html/videos/thumbnails/Lindsaydance101201.jpg
/home/public_html/videos/thumbnails/Mileyphoto101203.jpg

6.解压缩tar.bz2存档文件

要解压缩高度压缩的tar.bz2文件,只需使用以下命令。以下示例命令将解压缩归档文件中的所有.flv文件。

# tar -xvf videos-14-09-12.tar.bz2

/home/public_html/videos/flv/katrinabarbiedoll231110.flv
/home/public_html/videos/flv/BrookmuellerCIA101125.flv
/home/public_html/videos/flv/dollybackinbb4101125.flv
/home/public_html/videos/flv/JenniferRobert101130.flv
/home/public_html/videos/flv/JustinAwardmovie101125.flv
/home/public_html/videos/flv/Lakme-Fashion-Week.flv
/home/public_html/videos/flv/Mileyphoto101203.flv
/home/public_html/videos/flv/Minissha-Lamba.flv

7.列出tar存档文件的内容

要列出tar存档文件的内容,只需使用选项t(列表内容)运行以下命令。以下命令将列出uploadprogress.tar文件的内容。

# tar -tvf uploadprogress.tar

-rw-r--r-- chregu/staff   2276 2011-08-15 18:51:10 package2.xml
-rw-r--r-- chregu/staff   7877 2011-08-15 18:51:10 uploadprogress/examples/index.php
-rw-r--r-- chregu/staff   1685 2011-08-15 18:51:10 uploadprogress/examples/server.php
-rw-r--r-- chregu/staff   1697 2011-08-15 18:51:10 uploadprogress/examples/info.php
-rw-r--r-- chregu/staff    367 2011-08-15 18:51:10 uploadprogress/config.m4
-rw-r--r-- chregu/staff    303 2011-08-15 18:51:10 uploadprogress/config.w32
-rw-r--r-- chregu/staff   3563 2011-08-15 18:51:10 uploadprogress/php_uploadprogress.h
-rw-r--r-- chregu/staff  15433 2011-08-15 18:51:10 uploadprogress/uploadprogress.c
-rw-r--r-- chregu/staff   1433 2011-08-15 18:51:10 package.xml

8.列出内容tar.gz存档文件

使用以下命令列出tar.gz文件的内容。

# tar -tvf staging.tecmint.com.tar.gz

-rw-r--r-- root/root         0 2012-08-30 04:03:57 staging.tecmint.com-access_log
-rw-r--r-- root/root       587 2012-08-29 18:35:12 staging.tecmint.com-access_log.1
-rw-r--r-- root/root       156 2012-01-21 07:17:56 staging.tecmint.com-access_log.2
-rw-r--r-- root/root       156 2011-12-21 11:30:56 staging.tecmint.com-access_log.3
-rw-r--r-- root/root       156 2011-11-20 17:28:24 staging.tecmint.com-access_log.4
-rw-r--r-- root/root         0 2012-08-30 04:03:57 staging.tecmint.com-error_log
-rw-r--r-- root/root      3981 2012-08-29 18:35:12 staging.tecmint.com-error_log.1
-rw-r--r-- root/root       211 2012-01-21 07:17:56 staging.tecmint.com-error_log.2
-rw-r--r-- root/root       211 2011-12-21 11:30:56 staging.tecmint.com-error_log.3
-rw-r--r-- root/root       211 2011-11-20 17:28:24 staging.tecmint.com-error_log.4

9.列出内容tar.bz2存档文件

要列出tar.bz2文件的内容,请发出以下命令。

# tar -tvf Phpfiles-org.tar.bz2

drwxr-xr-x root/root         0 2012-09-15 03:06:08 /home/php/
-rw-r--r-- root/root      1751 2012-09-15 03:06:08 /home/php/iframe_ew.php
-rw-r--r-- root/root     11220 2012-09-15 03:06:08 /home/php/videos_all.php
-rw-r--r-- root/root      2152 2012-09-15 03:06:08 /home/php/rss.php
-rw-r--r-- root/root      3021 2012-09-15 03:06:08 /home/php/index.php
-rw-r--r-- root/root      2554 2012-09-15 03:06:08 /home/php/vendor.php
-rw-r--r-- root/root       406 2012-09-15 03:06:08 /home/php/video_title.php
-rw-r--r-- root/root      4116 2012-09-15 03:06:08 /home/php/report.php
-rw-r--r-- root/root      1273 2012-09-15 03:06:08 /home/php/object.html

10.来自tar文件的Untar单个文件

要从cleanfiles.sh.tar中提取名为cleanfiles.sh的单个文件,请使用以下命令。

# tar -xvf cleanfiles.sh.tar cleanfiles.sh
OR
# tar --extract --file=cleanfiles.sh.tar cleanfiles.sh

cleanfiles.sh

11.来自tar.gz文件的Untar单个文件

以提取一个单一的文件tecmintbackup.xml从tecmintbackup.tar.gz存档文件,按如下方式使用该命令。

# tar -zxvf tecmintbackup.tar.gz tecmintbackup.xml
OR
# tar --extract --file=tecmintbackup.tar.gz tecmintbackup.xml

tecmintbackup.xml

12.来自tar.bz2文件的Untar单个文件

要从文件Phpfiles-org.tar.bz2中提取名为index.php的单个文件,请使用以下选项。

# tar -jxvf Phpfiles-org.tar.bz2 home/php/index.php
OR
# tar --extract --file=Phpfiles-org.tar.bz2 /home/php/index.php

/home/php/index.php

13.解压tar,tar.gz和tar.bz2文件中的多个文件

从tar,tar.gz和tar.bz2存档文件中提取或解压缩多个文件。例如,以下命令将从存档文件中提取“ 文件1 ”“ 文件2 ”。

# tar -xvf tecmint-14-09-12.tar "file 1" "file 2" 

# tar -zxvf MyImages-14-09-12.tar.gz "file 1" "file 2" 

# tar -jxvf Phpfiles-org.tar.bz2 "file 1" "file 2"

14.使用通配符提取文件组

要提取一组文件,我们使用基于通配符的提取。例如,从tar,tar.gz和tar.bz2存档文件中提取模式以.php开头的所有文件的组。

# tar -xvf Phpfiles-org.tar --wildcards '*.php'

# tar -zxvf Phpfiles-org.tar.gz --wildcards '*.php'

# tar -jxvf Phpfiles-org.tar.bz2 --wildcards '*.php'

/home/php/iframe_ew.php
/home/php/videos_all.php
/home/php/rss.php
/home/php/index.php
/home/php/vendor.php
/home/php/video_title.php
/home/php/report.php
/home/php/video.php

15.将文件或目录添加到tar存档文件

要将文件或目录添加到现有的tar归档文件,我们使用选项r(追加)。例如,我们将文件xyz.txt和目录php添加到现有的tecmint-14-09-12.tar存档文件中。

# tar -rvf tecmint-14-09-12.tar xyz.txt

# tar -rvf tecmint-14-09-12.tar php

drwxr-xr-x root/root         0 2012-09-15 02:24:21 home/tecmint/
-rw-r--r-- root/root  15740615 2012-09-15 02:23:42 home/tecmint/cleanfiles.sh
-rw-r--r-- root/root    863726 2012-09-15 02:23:41 home/tecmint/openvpn-2.1.4.tar.gz
-rw-r--r-- root/root  21063680 2012-09-15 02:24:21 home/tecmint/tecmint-14-09-12.tar
-rw-r--r-- root/root   4437600 2012-09-15 02:23:41 home/tecmint/phpmyadmin-2.11.11.3-1.el5.rf.noarch.rpm
-rw-r--r-- root/root     12680 2012-09-15 02:23:41 home/tecmint/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
-rw-r--r-- root/root 0 2012-08-18 19:11:04 xyz.txt
drwxr-xr-x root/root 0 2012-09-15 03:06:08 php/ 
-rw-r--r-- root/root 1751 2012-09-15 03:06:08 php/iframe_ew.php 
-rw-r--r-- root/root 11220 2012-09-15 03:06:08 php/videos_all.php 
-rw-r--r-- root/root 2152 2012-09-15 03:06:08 php/rss.php 
-rw-r--r-- root/root 3021 2012-09-15 03:06:08 php/index.php 
-rw-r--r-- root/root 2554 2012-09-15 03:06:08 php/vendor.php 
-rw-r--r-- root/root 406 2012-09-15 03:06:08 php/video_title.php

16.将文件或目录添加到tar.gz和tar.bz2文件中

tar命令没有将文件或目录添加到现有压缩tar.gz和tar.bz2存档文件的选项。如果我们尝试将获得以下错误。

# tar -rvf MyImages-14-09-12.tar.gz xyz.txt

# tar -rvf Phpfiles-org.tar.bz2 xyz.txt

tar: This does not look like a tar archive
tar: Skipping to next header
xyz.txt
tar: Error exit delayed from previous errors

17.如何验证tar,tar.gz和tar.bz2存档文件

要验证任何tar或压缩的归档文件,我们使用选项W(验证)。要做,只需使用以下命令示例。(注意:您无法对压缩(* .tar.gz,* .tar.bz2)存档文件进行验证)。

# tar tvfW tecmint-14-09-12.tar

tar: This does not look like a tar archive
tar: Skipping to next header
tar: Archive contains obsolescent base-64 headers
tar: VERIFY FAILURE: 30740 invalid headers detected
Verify -rw-r--r-- root/root    863726 2012-09-15 02:23:41 /home/tecmint/openvpn-2.1.4.tar.gz
Verify -rw-r--r-- root/root  21063680 2012-09-15 02:24:21 /home/tecmint/tecmint-14-09-12.tar
tar: /home/tecmint/tecmint-14-09-12.tar: Warning: Cannot stat: No such file or directory
Verify -rw-r--r-- root/root   4437600 2012-09-15 02:23:41 home/tecmint/phpmyadmin-2.11.11.3-1.el5.rf.noarch.rpm
tar: /home/tecmint/phpmyadmin-2.11.11.3-1.el5.rf.noarch.rpm: Warning: Cannot stat: No such file or directory
Verify -rw-r--r-- root/root     12680 2012-09-15 02:23:41 home/tecmint/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
tar: /home/tecmint/rpmforge-release-0.5.2-2.el5.rf.i386.rpm: Warning: Cannot stat: No such file or directory
Verify -rw-r--r-- root/root         0 2012-08-18 19:11:04 xyz.txt
Verify drwxr-xr-x root/root         0 2012-09-15 03:06:08 php/

18.检查tar,tar.gz和tar.bz2存档文件的大小

要检查任何tar,tar.gz和tar.bz2存档文件的大小,请使用以下命令。例如,以下命令将以千字节(KB)显示存档文件的大小。

# tar -czf - tecmint-14-09-12.tar | wc -c
12820480

# tar -czf - MyImages-14-09-12.tar.gz | wc -c
112640

# tar -czf - Phpfiles-org.tar.bz2 | wc -c
20480

Tar使用和选项
c - 创建存档文件。
x - 提取存档文件。
v - 显示存档文件的进度。
f - 存档文件的文件名。
t - 查看存档文件的内容。
j - 通过bzip2过滤归档。
z - 通过gzip过滤归档。
r - 将文件或目录附加或更新到现有存档文件。
W - 验证存档文件。
通配符 - 在unix tar命令中指定模式。
这就是现在,希望上面的tar命令示例足以让你学习,更多信息请使用man tar命令。

如果您希望将任何大型tar存档文件拆分为多个部分或块,请阅读本文:

不要错过:将 大型'tar'存档拆分为多个特定大小的文件

如果我们错过了任何实例,请通过评论框与我们分享,请不要忘记与您的朋友分享这篇文章。这是说谢谢的最佳方式......


0 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注

zh_CNChinese
en_USEnglish zh_CNChinese