Linux tar命令(创建和提取归档)
Syq2803
・10 分钟阅读
Tar最初是为创建归档文件而设计的,用来在磁带上存储文件,这就是为什么它的名字是"tape AR chive"
在本教程中,向你展示如何使用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=name
(-f archive-name
) - 指定归档文件名ARCHIVE_NAME
- 归档文件的名称FILE_NAME ( s )
- 要从归档中提取的以空格分隔的文件名列表,如果未提供,就提取整个归档文件
执行tar命令时,可以使用tar
操作和选项的长格式或短格式,长格式更具可读性,而短格式更快地键入,长格式选项以双划线( --
)作为前缀,短格式选项的前缀是一个单破折号( -
),可以省略。
创建Tar归档文件
Tar支持大量压缩程序,如gzip
,bzip2
,lzip
,lzma
和xz,创建压缩的tar归档文件时,接受将压缩器后缀附加到归档文件名,例如如果已使用gzip
压缩了归档文件,就应命名为archive.tar.gz,
要创建tar归档文件,请使用-c
选项,后跟-f
和归档文件的名称。
例如要从名为archive.tar
的文件file1
,file2
,file3
创建名为的归档文件,
tar -cf archive.tar file1 file2 file3
以下是使用长格式选项的等效命令:
tar --create --file=archive.tar file1 file2 file3
从一个或多个目录或文件的内容创建归档,默认情况下,目录递归归档,除非指定了--no-recursion
选项。
以下示例将创建一个user_backup.tar
的/home/user
目录的归档文件:
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 bz归档
压缩tar文件的另一个流行算法是bzip,使用bzip压缩tar归档时,归档名称应以tar.bz2
或tbz
结尾,
-j
选项时,tar使用bzip2
算法压缩归档文件,以下命令将从给定文件创建tar.bz2
归档文件:
tar -cjf archive.tar.bz2 file1 file2
列出Tar归档文件
当与--list
( -t
)选项一起使用时,tar
命令将列出tar归档文件的内容,而不提取它,命令bellow将列出archive.tar
文件的内容:
tar -tf archive.tar
输出将列出归档中所有文件的名称:file1
file2
file3
要获取更多信息,如文件所有者,文件大小,时间戳记使用--verbose
( -v
)选项:
tar -tvf archive.tar
-rw-r--r-- linuxize/users 0 2018-09-08 01:19 file1
-rw-r--r-- linuxize/users 0 2018-09-08 01:19 file2
-rw-r--r-- linuxize/users 0 2018-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 bz归档
在提取压缩归档文件(如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
操作从归档文件中删除文件。
下面的示例演示如何从tar中删除文件file1
:
tar --delete -f archive.tar file1
结束语
tar
命令最常见的用法是创建和提取tar归档文件,提取归档文件时,使用tar -xf
命令,后跟归档名称,并创建一个新文件,使用tar -czf
,后跟归档名称以及要添加的文件和目录。
有关tar命令的详细信息,请参阅gnu tar文档页面。