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
存档文件,并将file1
和file2
文件打包到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
文件,并打包file1
和file2
文件:
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
命令,然后输入存档名称和要大伯的文件。如有任何疑问,请在下面发表评论。