tar存档是一个文件,用于存储其它文件的容器。包括文件的信息,例如所有权,权限和时间戳等。tar命令允许您提取,解压缩tar.gz存档文件。

在Linux系统中,可以使用tar命令创建tar.gz存档文件。 该命令还可以使用各种压缩程序来压缩存档文件,其中gzip是最流行的压缩程序。

按照惯例,以gzip压缩的tar文件的名称应以.tar.gz.tgz结尾。本教程说明如何创建tar.gz文件。

在本教程中,我们将说明如何创建tar.gz文件。包括创建tar.gz文件使用tar命令与选项,递归打包目录并创建tar.gz文件,将tar存档文件写入到标准输出并使用gzip压缩,使用通配符创建tar.gz文件,SSH上传并提取/解压缩tar.gz存档。

创建tar.gz文件

大多数Linux发行版都已安装支持压缩创建存档文件的GNU tar命令。使用tar命令创建tar.gz文件的命令的一般形式如下:

tar -czf archive-name.tar.gz file-name...

-c选项指示tar创建tar存档文件。-z选项指示tar命令使用gzip程序进行压缩。-f选项指定tar存档文件的名称。file-name...指定要打包的文件,多个文件或者目录使用空格进行分隔。

运行命令的用户必须在将创建tar.gz文件的目录上具有写的权限,并且对要打包的的文件具有读的权限。

例如,要创建一个名为archive.tar.gz存档文件,并将file1file2文件打包到archive.tar.gz文件中,您可以使用以下tar命令:

tar -czf archive.tar.gz file1 file2

成功后,该命令不会有任何输出。 要验证是否创建了archive.tar.gz存档,请使用ls命令列出当前目录的所有文件。

如需要查看tar命令整个工作过程,可使用-v选项使tar命令更加可见。tar命令将在终端上打印要添加到archive.tar.gz存档的文件名称。如果要在指定的目录中创建tar.gz文件,请提供存档文件的完整路径。

以下命令将在用户myfreax的家目录下,创建archive.tar.gz文件,并打包file1file2文件:

tar -czf /home/myfreax/archive.tar.gz file1 file2

打包目录

在创建存档时,您可以打包一个或多个文件/目录。默认情况下,tar命令将递归目录的所有文件并创建存档。如果你指定了--no-recursion选项,tar命令将不会递归目录的所有文件。

以下示例展示如何创建web_backup.tar.gz存档文件并递归打包/var/www/website目录中的所有文件:

tar -czf web_backup.tar.gz /var/www/website

tar与标准输出

如果您运行的系统使用较旧版本的tar命令不支持压缩程序的选项,则可以使用gzip命令。在以下示例中,tar命令将存档写入到标准输出,由-表示。 并通过管道|传递到gzip命令,并由gzip命令将tar存档文件压缩,然后写入到磁盘中:

tar -czf - file1 file2 | gzip > archive.tar.gz

使用通配符创建tar.gz存档

通配符*表示匹配任意字符包括空白的制表符。*.jpg表示以.jpg作为扩展名结尾的所有文件。以下命令将打包当前目录下所有.jpg文件到images.tar.gz文件中:

tar -czf images.tar.gz *.jpg

SSH上传并提取tar.gz存档

在上面提到-符号将会指示tar命令创建的存档文件写入到标准输出。管道符|可以传递标准输出。这样我们就要可以实现在本地打包,然后通过ssh传递远程服务器。

以下命令将使用tar命令project目录的所有文件并写入到标准输出,然后通过管道传递到ssh,由ssh上传并在服务器解压/提取存档文件

tar czvf - project | ssh user@ip_addr "tar xzv -C /var/www"

结论

tar.gz文件是使用gzip压缩的tar文件。 要创建tar.gz文件,请使用tar -czf命令,然后输入存档名称和要大伯的文件。如有任何疑问,请在下面发表评论。