Linux中的Tar命令(创建和提取档案)
“ tar”命令用于通过将一组文件转换为归档文件来创建tar归档文件。
它还具有提取tar归档文件,显示归档文件中包含的文件列表,将其他文件添加到现有归档文件以及各种其他类型的操作的功能。
Tar最初旨在创建用于在磁带上存储文件的档案,这就是为什么它的名称为“ Tape ARchive”。
在本教程中,我们将通过实际示例和最常见的tar选项的详细说明,向我们展示如何使用'tar'命令提取,列出和创建tar归档文件。
Tar命令语法
tar有两种版本,BSD tar和GNU tar之间有一些功能差异。
大多数Linux系统默认都预先安装了GNU tar。
“ tar”命令的一般语法如下:
tar [OPERATION_AND_OPTIONS] [ARCHIVE_NAME] [FILE_NAME(s)]
- 'OPERATION'-仅允许和要求一个操作参数。最常用的操作是:
- '--create'('-c')-创建一个新的tar存档。
- '--extract'('-x')-从存档中提取整个存档或者一个或者多个文件。
- '--list'('-t')-显示存档中包含的文件的列表
- 'OPTIONS'-最常用的操作是:
- '--verbose'('-v')-显示tar命令正在处理的文件。
- '--file = archive =名称'('-f archive-name')-指定存档文件名。
- 'ARCHIVE_NAME'-档案名称。
- 'FILE_NAME(s)'-要从档案中提取的文件名的空格分隔列表。如果未提供,则将提取整个存档。
执行tar命令时,可以使用'tar'操作和选项的长格式或者短格式。
长格式更易于阅读,而短格式则更易于键入。
长格式选项以双破折号('-')开头。
简短格式选项的前缀是单破折号('-'),可以省略。
创建Tar存档
Tar支持各种压缩程序,例如'gzip','bzip2','lzip','lzma','lzop','xz'和'compress'。
创建压缩的tar归档文件时,将压缩程序后缀添加到归档文件名是公认的惯例。
例如,如果归档文件已使用“ gzip”压缩,则应将其命名为archive.tar.gz。
要创建tar归档文件,请使用“ -c”选项,后跟“ -f”和归档文件的名称。
例如,要从名为'file1','file2','file3'的文件创建名为'archive.tar'的档案,我们可以运行以下命令:
tar -cf archive.tar file1 file2 file3
这是使用长格式选项的等效命令:
tar --create --file=archive.tar file1 file2 file3
我们可以从一个或者多个目录或者文件的内容创建档案。
默认情况下,除非指定了“ --no-recursion”选项,否则将以递归方式归档目录。
以下示例将在“/home/user”目录中创建一个名为“ user_backup.tar”的归档文件:
tar -cf backup.tar /home/user
如果要查看正在处理的文件,请使用“ -v”选项。
创建Tar Gz存档
Gzip是最流行的tar文件压缩算法。
使用gzip压缩tar归档文件时,归档文件名称应以'tar.gz'或者'tgz'结尾。
“ -z”选项告诉tar在创建档案时使用“ gzip”算法压缩档案。
例如,要从给定文件创建tar.gz归档文件,可以使用以下命令:
tar -czf archive.tar.gz file1 file2
创建Tar Bz2存档
压缩tar文件的另一种流行算法是bzip2.
使用bzip2压缩tar归档文件时,归档文件名称应以'tar.bz2'或者'tbz'结尾。
当指定“ -j”选项时,tar将使用“ bzip2”算法来压缩档案。
以下命令将根据给定的文件创建一个“ tar.bz2”归档文件:
tar -cjf archive.tar.bz2 file1 file2
列出Tar档案
当与'--list'('-t')方法一起使用时,'tar'命令将列出tar归档文件的内容,而不会将其解压缩。
下面的命令将列出“ archive.tar”文件的内容:
tar -tf archive.tar
输出将列出存档中所有文件的名称:
file1file2file3
要获取更多信息,例如文件所有者,文件大小,时间戳记,请使用'--verbose'('-v')选项:
tar -tvf archive.tar
-rw-r--r-- theitroad/users 0 2016-09-08 01:19 file1-rw-r--r-- theitroad/users 0 2016-09-08 01:19 file2-rw-r--r-- theitroad/users 0 2016-09-08 01:19 file3
提取Tar存档
Linux中的大多数归档文件都是使用tar或者tar.gz格式归档和压缩的。
知道如何从命令行提取这些文件很重要。
要提取tar存档,请使用'--extract'('-x')选项,后跟存档名称:
tar -xf archive.tar
添加'-v'选项以打印正在提取的文件的名称也是很常见的。
tar -xvf archive.tar
在其他目录中提取Tar存档
默认情况下,tar将在当前工作目录中提取存档内容。
使用'--directory'('-C')将归档文件提取到特定目录中:
例如,要将存档内容提取到“/opt/files”目录中,可以使用:
tar -xf archive.tar -C /opt/files
提取Tar Gz和Tar Bz2档案
提取诸如“ tar.gz”或者“ tar.bz2”之类的压缩档案时,无需指定解压缩选项。
该命令与提取“ tar”归档文件时的命令相同:
tar -xf archive.tar.gz
tar -xf archive.tar.bz2
从Tar存档中提取特定文件
有时,我们可能不需要提取整个档案,而只提取其中的几个文件。
要从tar归档文件中提取特定文件,请在归档文件名后添加一个用空格分隔的文件名列表,以供提取:
tar -xf archive.tar file1 file2
提取文件时,必须提供其确切名称,包括路径,如'--list'('-t')所示。
从档案中提取一个或者多个目录与提取文件相同:
tar -xf archive.tar dir1 dir2
如果我们尝试解压缩不存在的文件,则会显示类似以下的错误消息:
tar -xf archive.tar README
tar: README: Not found in archive tar: Exiting with failure status due to previous errors
使用通配符从Tar存档中提取文件
要基于通配符模式从存档中提取文件,请使用'--wildcards'开关并引用该模式以防止shell解释它。
例如,要提取名称以“ .js”结尾的文件(Javascript文件),可以使用:
tar -xf archive.tar --wildcards '*.js'
将文件添加到现有的Tar存档
要将文件或者目录添加到现有的tar存档中,请使用'--append'('-r')操作。
例如,要将一个名为“ newfile”的文件添加到archive.tar,请运行:
tar -rvf archive.tar newfile
从Tar存档中删除文件
使用“ --delete”操作从存档中删除文件。
以下示例显示了如何从archive.tar中删除文件“ file1”:
tar --delete -f archive.tar file1