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,如需转载请自行联系原作者





相关文章
|
2月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
130 8
|
27天前
|
Linux Shell
Linux 10 个“who”命令示例
Linux 10 个“who”命令示例
53 14
Linux 10 个“who”命令示例
|
4天前
|
运维 监控 Linux
推荐几个不错的 Linux 服务器管理工具
推荐几个不错的 Linux 服务器管理工具
|
6天前
|
Linux
linux查看目录下的文件夹命令,find查找某个目录,但是不包括这个目录本身?
通过本文的介绍,您应该对如何在 Linux 系统中查看目录下的文件夹以及使用 `find` 命令查找特定目录内容并排除该目录本身有了清晰的理解。掌握这些命令和技巧,可以大大提高日常文件管理和查找操作的效率。 在实际应用中,灵活使用这些命令和参数,可以帮助您快速定位和管理文件和目录,满足各种复杂的文件系统操作需求。
28 8
|
16天前
|
Ubuntu Linux
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
100 20
|
16天前
|
网络协议 Linux 应用服务中间件
kali的常用命令汇总Linux
kali的常用命令汇总linux
43 7
|
2月前
|
Linux 数据库
Linux中第一次使用locate命令报错?????
在Linux CentOS7系统中,使用`locate`命令时出现“command not found”错误,原因是缺少`mlocate`包。解决方法是通过`yum install mlocate -y`或`apt-get install mlocate`安装该包,并执行`updatedb`更新数据库以解决后续的“can not stat”错误。
35 9
|
2月前
|
监控 网络协议 Linux
Linux netstat 命令详解
Linux netstat 命令详解
|
2月前
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
158 3
|
2月前
|
Linux
在 Linux 系统中,`find` 命令
在 Linux 系统中,`find` 命令
40 1