tar命令

时间:2020-03-05 15:25:58  来源:igfitidea点击:

tar代表"磁带档案 tape archive",指当数据备份到磁带时,从计算后的早期使用的练习。

尽管名称的怀旧起源,但Tar非常强大,并使用现代技术归档和压缩文件。

tar是一个归档工具。
它从多个文件中创建一个文件。
这会在传输文件时节省网络带宽,时间和处理电源。
由于文件开销,从100 MB的单个文件少于传输100 MB的100个文件。

这就是为什么你经常在'tar包'中找到可用的软件。
tar包是用于tar文件的共同术语。

虽然TAR本身无法压缩文件,但我们可以使用其中一个常见的压缩算法在创建tar包时压缩文件。
在此基本tar教程中,我会向我们展示该怎么做。

常见的tar文件

以下是一些常见的"tar文件",我们会发现:

.tar:这是一个tar包文件。
它只是一个存档,没有进行压缩。

.tar.gz或者.tgz:这是一个归档的扩展,该存档已经用gzip压缩。

.tar.bz2或者.tbz:这是一个用bz2压缩的存档的扩展。
这是一种相对较新的技术。
它具有更高的压缩比例,但增加了增加的缩小功率意味着完成需要更长的时间。

.tar.xz或者.txz等:tar还支持xz,lzip等支持。
这些工具主要使用相同的压缩算法LZMA。
在Windows环境中变得相当常见的流行7Z也使用了这种算法。

文件中的进一步差异来自结构和元数据。
我不会在我们的例子中进入这些细节,但我想提到他们。

重要的是要记住,在Linux和其他基于UNIX的系统上没有必要的扩展。
UNIX系统通常可以通过其标头识别文件,无论扩展如何,但使用常见的命名方案都可以帮助避免混淆。
我们可以使用Linux中的文件命令来了解文件的类型。

tar命令例子

以下是将使用的文档的完整列表。

Hyman@theitroad:~/Documents$ll
total 7404
drwxr-xr-x  2 christopher christopher    4096 Jan  5 10:55 ./
drwxr-xr-x 17 christopher christopher    4096 Jan  5 10:59 ../
-rw-r--r--  1 christopher christopher 5094932 Apr 30 23:54 aerial-view-of-bushes-on-sand-field-3876435.jpg
-rw-r--r--  1 christopher christopher   13268 Apr 30 23:57 lorem1.txt
-rw-r--r--  1 christopher christopher   13268 Apr 30 23:57 lorem2.txt
-rw-r--r--  1 christopher christopher   13268 Apr 30 23:57 lorem3.txt
-rw-r--r--  1 christopher christopher   13268 Apr 30 23:56 lorem.txt
-rw-r--r--  1 christopher christopher 2411919 Apr 30 23:54 mountain-range-2397645.jpg

这是一个常用的选项表。
请记住,这只是一个开始。
我建议在我们觉得舒适的情况下自己通过帮助文档找到更多的可能性。

|选项|扩展选项|描述|
| --- - | --- | - - |
| -c,| -create |创建一个新档案|
| -d,| -diff,-compare |查找归档和文件系统之间的差异|
| -R,| -append |将文件添加到存档结束|
| -T,| -list|列出存档的内容|
| -u,| -update |仅在归档中申请较新的文件|
| -x,| -extract, - etget |从档案中提取文件|
| -J,| -bzip2 |通过Bzip2过滤存档|
| -z,| -gzip,-gunzip,-ungzip |通过GZIP过滤存档|

1)创造一个tar包

早期我提到与Tar命令关联的常见文件类型。
这也许是最基本的。

tar cvf output_tar包.tar source_directory

压缩不会被应用,因此该文件将至少占用作为文档文件夹中的文件的空间。

Hyman@theitroad:~$tar cvf doc.tar ~/Documents

tar cvf(创建,详细,文件归档):它创建一个名为doc.tar的新的tar文件,从~/documents中的所有文件。

Hyman@theitroad:~$ll doc.tar
-rw-r--r-- 1 christopher christopher 7567360 Jan  5 11:00 doc.tar

请注意,tar包将与tar包的源目录具有相同的目录结构。

2)创建一个gzip tar包

让我们在创建tar包时尝试Gzip压缩。

Hyman@theitroad:~$tar cvzf doc.tar.gz ~/Documents

tar cvzf(创建,冗长,g-zip,file-inshive):它从~/文档中的所有文件创建名为doc.tar.gz的新tar文件。
它在创建tar包时使用Gzip压缩(带选项z)。

Hyman@theitroad:~$ll doc.tar.gz 
-rw-r--r-- 1 christopher christopher 7512498 Jan  5 11:01 doc.tar.gz

正如我们所看到的,纬向纬度尺寸为54862字节(53MB),少于正常,未压缩的tar包。

使用连字符的同时注意 - 具有tar选项

通常,当我们使用Linux命令使用选项时,我们将在选项之前添加连字符( - )。
选项之前的连字符不是强制性的,最好避免。
这就是我在示例中没有使用过的原因。
如果在选项之前使用连字符,则应始终在选项的末尾保持f。
如果使用tar -cvfz,则z成为选项z的参数。
然后你会看到这样的错误:tar:doc.tar.gz:不能统计:没有这样的文件或者目录这就是为什么在所有其他选项结束时使用选项f是一个很好的做法,所以即使是这样如果我们使用Hyphen习惯,它不会产生问题。

3)创建一个BZ2 tar包

说,你想创建一个bz2 tar包。
步骤与前一个步骤相同。
我们只需要将选项z(gzip)更改为j(bz2)。
请参阅我前面提到的选项表。

Hyman@theitroad:~$tar cvjf doc.tar.bz2 ~/Documents

tar cvfj(创建,verbose,bz2类型,文件归档)。

Hyman@theitroad:~$ll doc.tar.bz2
-rw-r--r-- 1 christopher christopher 7479782 Jan  5 11:04 doc.tar.bz2

注意大小?
它甚至少于谷突厥头的tar包。

4)列出tar包的内容

我们可以使用-t选项(而不是-c)来查看存档文件的内容。
这与文件是否被压缩相同。
它将列出实际文件大小,而不是压缩大小。

christophHyman@theitroad:~$tar tvf doc.tar
drwxr-xr-x christopher/christopher 0 2017-05-05 10:55 home/christopher/Documents/
-rw-r--r-- christopher/christopher 5094932 2017-04-30 23:54 home/christopher/Documents/aerial-view-of-bushes-on-sand-field-3876435.jpg
-rw-r--r-- christopher/christopher   13268 2017-04-30 23:57 home/christopher/Documents/lorem1.txt
-rw-r--r-- christopher/christopher   13268 2017-04-30 23:56 home/christopher/Documents/lorem.txt
-rw-r--r-- christopher/christopher 2411919 2017-04-30 23:54 home/christopher/Documents/mountain-range-2397645.jpg
-rw-r--r-- christopher/christopher   13268 2017-04-30 23:57 home/christopher/Documents/lorem3.txt
-rw-r--r-- christopher/christopher   13268 2017-04-30 23:57 home/christopher/Documents/lorem2.txt

5)将更多文件添加到tar包

我们可以使用-r将文件添加到一个tar包存档。
我们无法将文件添加到压缩存档,而无需首先使用tar命令提取它们。

我们还可以使用"-u""选项添加以进行更新。
此选项应该仅根据帮助文档添加新文件,但在我的练习中,它与Append相同,添加了所有文件的新副本。

Hyman@theitroad:~$tar rvf doc.tar ~/Documents/

6)提取tar包

既然你已经看到了不同类型的压缩如何影响整体文件大小,让我们看看提取这些文件。

Hyman@theitroad:~$cd docs
Hyman@theitroad:~/docs$tar xvf ~/doc.tar.gz

我换成了一个名为docs的新目录。
然后我使用tar xvf(提取,详细,文件归档)来解压缩此处的内容。

Hyman@theitroad:~/docs/home/christopher/Documents$ls
aerial-view-of-bushes-on-sand-field-3876435.jpg  lorem1.txt  lorem2.txt  lorem3.txt  lorem.txt  mountain-range-2397645.jpg

重要的是要注意,Tar保留文件结构,因此当我提取文件时,它们在/home /克里斯托弗/文档中。
为避免这种情况,我们可以切换到所需的目录(~/文档)并使用*通配符而不是目录结构复制所有文件。

7)将tar包提取给特定目录

默认情况下,在当前目录中提取了tar包的内容。
这并不总是可取的。

我们可以以下列方式将tar包提取到特定目录:

tar xvf tar_file -C destination_directory

必须存在目标目录,因此请务必使用mkdir命令事先创建一个。

总结

记住这一点:

  • C代表Create:我们将它用作创建tar包
  • x代表提取物:你用它来提取一个tar包
  • f代表文件:我们将其用于tar文件名(适用于创建或者提取)。尝试在选项结束时使用它。
  • v代表详细:它是可选的,但它显示了命令发生的事情。
    当然,我们不能在同一个tar命令中使用c和x选项。