📜  Linux 中的 tar 命令及示例

📅  最后修改于: 2022-05-13 01:57:30.209000             🧑  作者: Mango

Linux 中的 tar 命令及示例

Linux 'tar' 代表磁带存档,用于创建存档和提取存档文件。 Linux 中的tar 命令是Linux 中提供归档功能的重要命令之一。我们可以使用 Linux tar 命令来创建压缩或未压缩的 Archive 文件,并对其进行维护和修改。

句法:

tar [options] [archive-file] [file or directory to be archived]

选项:
-c :创建档案
-x :提取存档
-f :创建具有给定文件名的存档
-t :显示或列出存档文件中的文件
-u :存档并添加到现有存档文件
-v :显示详细信息
-A :连接存档文件
-z : zip,告诉 tar 命令使用 gzip 创建 tar 文件
-j :使用 tbzip 过滤归档 tar 文件
-W :验证存档文件
-r :在已经存在的 .tar 文件中更新或添加文件或目录

什么是存档文件?
存档文件是由一个或多个文件以及元数据组成的文件。存档文件用于将多个数据文件收集到一个文件中以便于携带和存储,或者只是压缩文件以使用更少的存储空间。

例子:
1. 使用选项 -cvf 创建未压缩的 tar 存档:此命令创建一个名为 file.tar 的 tar 文件,它是当前目录中所有 .c 文件的存档。



$ tar cvf file.tar *.c

输出 :

os2.c
os3.c
os4.c

2. 使用选项 -xvf 从存档中提取文件:此命令从存档中提取文件。

$ tar xvf file.tar

输出 :

os2.c
os3.c
os4.c

3. 使用选项 -z 对 tar 存档进行 gzip 压缩:此命令创建一个名为 file.tar.gz 的 tar 文件,它是 .c 文件的存档。

$ tar cvzf file.tar.gz *.c

4. 使用选项 -xvzf 提取 gzip tar 存档 *.tar.gz:此命令从 tar 存档的 file.tar.gz 文件中提取文件。

$ tar xvzf file.tar.gz

5. 在 Linux 中使用选项 -j 创建压缩的 tar 存档文件:此命令压缩并创建小于 gzip 大小的存档文件。压缩和解压缩都比 gzip 花费更多的时间。

$ tar cvfj file.tar.tbz example.cpp

输出 :

$tar cvfj file.tar.tbz example.cpp
example.cpp
$tar tvf file.tar.tbz
-rwxrwxrwx root/root        94 2017-09-17 02:47 example.cpp

6. 在 Linux 中解压单个 tar 文件或指定目录:此命令将使用 -C 选项解压当前目录或指定目录中的文件。



$ tar xvfj file.tar 
or 
$ tar xvfj file.tar -C path of file in directory 

7. 在 Linux 中解压多个 .tar、.tar.gz、.tar.tbz 文件:此命令将从 tar、tar.gz 和 tar.bz2 存档文件中提取或解压多个文件。例如,上面的命令将从存档文件中提取“fileA”“fileB”。

$ tar xvf file.tar "fileA" "fileB" 
or 
$ tar zxvf file1.tar.gz "fileA" "fileB"
or 
$ tar jxvf file2.tar.tbz "fileA" "fileB"

8. 检查 Linux 中现有 tar、tar.gz、tar.tbz 文件的大小上述命令将以千字节 (KB) 为单位显示存档文件的大小。

$ tar czf file.tar | wc -c
or 
$ tar czf file1.tar.gz | wc -c
or 
$ tar czf file2.tar.tbz | wc -c

9. 更新 Linux 中现有的 tar 文件

$ tar rvf file.tar *.c

输出 :

os1.c

10. 使用选项 -tf 列出内容并指定 tarfile:此命令将列出存档文件的整个列表。我们还可以列出 tarfile 中的特定内容

$ tar tf file.tar

输出 :

example.cpp

11. 通过“grep 命令”应用管道以查找我们要查找的内容:此命令将仅列出存档文件中 grep 中提到的文本或图像。

$ tar tvf file.tar | grep "text to find" 
or
$ tar tvf file.tar | grep "filename.file extension"

12. 我们可以传递文件名作为参数来搜索 tarfile :此命令查看存档文件及其详细信息。

$ tar tvf file.tar filename 

13. 使用选项 -tvf 查看档案

$ tar tvf file.tar

输出 :



-rwxrwxrwx root/root       191 2017-09-17 02:20 os2.c
-rwxrwxrwx root/root       218 2017-09-17 02:20 os3.c
-rwxrwxrwx root/root       493 2017-09-17 02:20 os4.c

什么是 Linux 中的通配符
可替代地被称为“野生字符”或“字符”,通配符是用来代替或表示一个或多个字符的符号。通配符通常是代表一个或多个字符的星号 (*) 或代表单个字符的问号 (?)。

例子 :

14. 搜索 .png 格式的图像:这将仅从存档 file.tar 中提取扩展名为 .png 的文件。 –wildcards 选项告诉 tar 解释文件名中的通配符
被提取;文件名 (*.png) 用单引号括起来,以保护通配符 (*) 不会被 shell 错误地扩展。

$ tar tvf file.tar --wildcards '*.png' 

注意:在上面的命令中,“*”用于代替文件名以获取该特定目录中存在的所有文件。