Linux命令(30):tar命令-归档工具

简介:

tar命令


功能说明

    tar是tape archive的缩写,是Linux下经常使用的归档工具,经常看到文件名以.tar和tgz结尾的文件,它们分别是用普通的tar命令归档的文件和用gzip归档的文件。tar归档文件可以由许多独立的文件、一个或多个目录层次或者两者的混合组合而成。用法如下:

  tar [主选项+辅助选项] 文件或目录

常用参数

选项 说明
-c 新建文件
-C 指定位置解压
-r 列出归档文件的内容
-t 列出档案文件中已经归档的文件列表
-x 从打包的档案文件中还原文件
-u 更新档案文件,用新建文件替换档案中的原始文件
-z 调用gzip命令在打包过程中压缩/解压文件 .tar.gz
-j 调用bzip2命令在打包过程中压缩/解压文件
-J 调用xz命令在打包过程中压缩/解压文件
-w 在还原文件时,把所有文件的修改时间设定为现在时间
-Z 用compress命令过滤档案
-f "-f"选项后面紧跟档案文件的存储设备,默认是磁盘,需要指定档案文件名;如果是磁带,只需指定磁带设备名即可。注意,在"-f"选项之后不能再跟任何其他选项,也就是说"-f"必须是tar命令的最后一个选项
-v 指定在创建归档文件过程中,显示各个归档文件的名称
-p 在文件归档的过程中,保持文件的属性不发生变化
-N "yyyy/mm/dd" 在指定日期之后的文件才会打包到档案文件中
--exclude file 在打包过程中,不将指定的file文件打包
-X 把不打包的文件写到文件里,配合X使用如:tar zcvf 1.tar.gz paichu.list ./shell/
常用组合命令
zcvf 打包.tar.gz
zxvf 解压.tar.gz

示例                    

    使用cf压缩,把当前目录下的test文件夹打包成test.tar,为便于演示,提前把app里的文件复制到test里一份

[root@c7 app]# tar -cf test.tar test/

[root@c7 app]# ll -h

总用量 432K

-rw-r--r--. 1 root root  181 11月 22 17:34 99.sh

-rw-------. 1 root root  12K 11月 22 14:08 messages

-rw-r--r--. 1 root root 1.2K 11月 22 15:17 messages2.gz

-rw-r--r--. 1 root root 1.2K 11月 22 14:36 messages.gz

-rw-r--r--. 1 root root 141K 11月 23 10:17 shell.txt

-rw-r--r--. 1 root root  48K 11月 23 10:17 shell.txt.bz2

drwxr-xr-x. 2 root root 4.0K 11月 23 17:07 test

-rw-r--r--. 1 root root 210K 11月 23 17:21 test.tar


    使用xf解压使用-C把文件解压到指定目录下

[root@c7 app]# mkdir test1                       #创建目标目录test1

[root@c7 app]# pwd

/root/app

[root@c7 app]# tar xf test.tar -C ./test1/     #解压到当前目录test1下

[root@c7 app]# ls ./test1/test/                  #验证查看

99.sh  messages  messages2.gz  messages.gz  shell.txt  shell.txt.bz2

    将test目录下的文件打包并压缩,打包成test2.tar.gz

   将test目录下的文件打包并压缩,打包成test2.tar.gz2

[root@c7 app]# tar zcvf test2.tar.gz test          #调用gzip打包成test2.tar.gz

test/

test/99.sh

test/messages

test/messages2.gz

test/messages.gz

test/shell.txt

test/shell.txt.bz2

[root@c7 app]# tar jcvf test2.tar.bz2 test        #调用bzip2打包成test2.tar.bz2

test/

test/99.sh

test/messages

test/messages2.gz

test/messages.gz

test/shell.txt

test/shell.txt.bz2

[root@c7 app]# ll -h

...略

drwxr-xr-x. 2 root root 4.0K 11月 23 17:07 test

drwxr-xr-x. 3 root root   17 11月 23 17:24 test1

-rw-r--r--. 1 root root 105K 11月 24 09:06 test2.tar.bz2

-rw-r--r--. 1 root root 105K 11月 24 09:05 test2.tar.gz

-rw-r--r--. 1 root root 210K 11月 23 17:21 test.tar

    使用tf、ztvf参数,查看压缩包的内容

[root@c7 app]# tar tf test2.tar.gz 

[root@c7 app]# tar ztvf test2.tar.gz 

drwxr-xr-x root/root         0 2016-11-23 17:07 test/

-rw-r--r-- root/root       181 2016-11-23 17:07 test/99.sh

-rw------- root/root     11595 2016-11-23 17:07 test/messages

-rw-r--r-- root/root      1149 2016-11-23 17:07 test/messages2.gz

-rw-r--r-- root/root      1202 2016-11-23 17:07 test/messages.gz

-rw-r--r-- root/root    143538 2016-11-23 17:07 test/shell.txt

-rw-r--r-- root/root     48218 2016-11-23 17:07 test/shell.txt.bz2

    使用zxvf参数,解压tar.gz和tgz文件,这个最常用了

[root@c7 tmp]# pwd                               #到/tmp目录下,在哪里解压文件,解压后的文件就会在当前目录下

/tmp

[root@c7 tmp]# tar zxvf /root/app/test2.tar.gz 

test/

test/99.sh

test/messages

test/messages2.gz

test/messages.gz

test/shell.txt

test/shell.txt.bz2

[root@c7 tmp]# ll -h test/

总用量 216K

-rw-r--r--. 1 root root  181 11月 23 17:07 99.sh

-rw-------. 1 root root  12K 11月 23 17:07 messages

-rw-r--r--. 1 root root 1.2K 11月 23 17:07 messages2.gz

-rw-r--r--. 1 root root 1.2K 11月 23 17:07 messages.gz

-rw-r--r--. 1 root root 141K 11月 23 17:07 shell.txt

-rw-r--r--. 1 root root  48K 11月 23 17:07 shell.txt.bz2

    使用zcvpf参数,将/tmp/test目录打包到当前目录下,并保存每个文件的权限

[root@c7 tmp]# tar zcvpf test3.tar.gz test/

test/

test/99.sh

test/messages

test/messages2.gz

test/messages.gz

test/shell.txt

test/shell.txt.bz2

[root@c7 tmp]# tar ztvf test3.tar.gz        #权限和上面的演示相同

drwxr-xr-x root/root         0 2016-11-23 17:07 test/

-rw-r--r-- root/root       181 2016-11-23 17:07 test/99.sh

-rw------- root/root     11595 2016-11-23 17:07 test/messages

-rw-r--r-- root/root      1149 2016-11-23 17:07 test/messages2.gz

-rw-r--r-- root/root      1202 2016-11-23 17:07 test/messages.gz

-rw-r--r-- root/root    143538 2016-11-23 17:07 test/shell.txt

-rw-r--r-- root/root     48218 2016-11-23 17:07 test/shell.txt.bz2

    在家目录下,仅解压/tmp/test3.tar.gz压缩文件中的test/shell.txt文件

[root@c7 ~]# pwd

/root

[root@c7 ~]# tar zxvf /tmp/test3.tar.gz test/shell.txt

test/shell.txt

[root@c7 ~]# ll

总用量 8

-rw-------. 1 root root 1104 4月  13 2016 anaconda-ks.cfg

drwxr-xr-x. 4 root root 4096 11月 24 09:06 app

drwxr-xr-x. 2 root root   22 11月 24 09:34 test

[root@c7 ~]# ll test/

总用量 144

-rw-r--r--. 1 root root 143538 11月 23 17:07 shell.txt

    使用-N指定日期,打包/root/app目录中2016/11/24以后的文件

[root@c7 tmp]# tar -N "2016/11/24" -zcvf log.tar.gz /root/app

    使用-exclude,打包文件时,排除指定文件

打包时排除expr1.sh文件

[root@redmine ~]# ls ./shell/

expr1.sh  judge_int.sh

[root@redmine ~]# tar zcvf sh.tar.gz --exclude=./shell/expr1.sh ./shell/

./shell/

./shell/judge_int.sh


打包时排除.sh的所有文件

[root@redmine ~]# ls ./shell/

1.txt  expr1.sh  judge_int.sh

[root@redmine ~]# tar zcvf sh.tar.gz --exclude=./shell/*.sh ./shell/     

./shell/

./shell/1.txt

[root@redmine ~]# tar tf sh.tar.gz 

./shell/

./shell/1.txt

    使用-C,指定位置解压

[root@redmine ~]# tar xf sh.tar.gz -C /tmp/

[root@redmine ~]# ls /tmp/shell/

1.txt


学习自:

高俊峰《循序渐进Linux》



      本文转自cix123  51CTO博客,原文链接:http://blog.51cto.com/zhaodongwei/1875880,如需转载请自行联系原作者





相关文章
|
11天前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
94 6
|
12天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
50 3
|
12天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
38 2
|
7天前
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
35 3
|
12天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
44 3
|
15天前
|
Linux
在 Linux 系统中,`find` 命令是一个强大的文件查找工具
在 Linux 系统中,`find` 命令是一个强大的文件查找工具。本文详细介绍了 `find` 命令的基本语法、常用选项和具体应用示例,帮助用户快速掌握如何根据文件名、类型、大小、修改时间等条件查找文件,并展示了如何结合逻辑运算符、正则表达式和排除特定目录等高级用法。
49 6
|
16天前
|
监控 Linux 开发者
如何在 Linux 中优雅的使用 head 命令,用来看日志简直溜的不行
`head` 命令是 Linux 系统中一个非常实用的工具,用于快速查看文件的开头部分内容。本文介绍了 `head` 命令的基本用法、高级用法、实际应用案例及注意事项,帮助用户高效处理文件和日志,提升工作效率。
25 7
|
16天前
|
监控 Linux Perl
Linux 命令小技巧:显示文件指定行的内容
在 Linux 系统中,处理文本文件是一项常见任务。本文介绍了如何使用 head、tail、sed 和 awk 等命令快速显示文件中的指定行内容,帮助你高效处理文本文件。通过实际应用场景和案例分析,展示了这些命令在代码审查、日志分析和文本处理中的具体用途。同时,还提供了注意事项和技巧,帮助你更好地掌握这些命令。
33 4
|
15天前
|
缓存 网络协议 Linux
Linux ip命令常用操作
Linux的 `ip`命令是一个强大且灵活的网络管理工具,能够执行从基本的网络接口配置到高级的路由和VLAN管理等多种操作。通过熟练掌握这些常用操作,用户可以更加高效地管理和配置Linux系统的网络环境。无论是在日常管理还是故障排除中,`ip`命令都是必不可少的工具。
18 2
|
16天前
|
缓存 运维 监控
【运维必备知识】Linux系统平均负载与top、uptime命令详解
系统平均负载是衡量Linux服务器性能的关键指标之一。通过使用 `top`和 `uptime`命令,可以实时监控系统的负载情况,帮助运维人员及时发现并解决潜在问题。理解这些工具的输出和意义是确保系统稳定运行的基础。希望本文对Linux系统平均负载及相关命令的详细解析能帮助您更好地进行系统运维和性能优化。
40 3
下一篇
无影云桌面