Linux 命令 tar 管理档案
- tar命令可以为一个指定的文件创建档案,并且可以向档案中加入新的文件,利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,以便于网络传输使用。
- 打包是指将一大堆文件或目录变成一个总的文件,而大小不变;
- 压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
- Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,要先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。
命令列表
args | 说明,这个命令选项可以结合起来使用 |
---|---|
-A 或--catenate |
新增文件到以存在的备份文件; |
-B |
设置区块大小; |
-c 或--create |
建立新的备份文件; |
-C <目录> |
用在解压缩,若要在特定目录解压缩,可以使用这个选项 |
-d |
记录文件的差别; |
-x 或--extract 或--get |
从备份文件中还原文件; |
-t 或--list |
列出备份文件的内容; |
-z 或--gzip 或--ungzip |
通过gzip指令处理备份文件; |
-Z 或--compress 或--uncompress |
通过compress指令处理备份文件; |
-f<备份文件> 或--file=<备份文件> |
指定备份文件; |
-v 或--verbose |
显示指令执行过程; |
-r |
添加文件到已经压缩的文件; |
-u |
添加改变了和现有的文件到已经存在的压缩文件; |
-j |
支持bzip2解压文件; |
-l |
文件系统边界设置; |
-k |
保留原有文件不覆盖; |
-m |
保留文件不被覆盖; |
-w |
确认压缩文件的正确性; |
-p 或--same-permissions |
用原来的文件权限还原文件; |
-P 或--absolute-names |
文件名使用绝对名称,不移除文件名称前的“/”号; |
-N <日期格式> 或 --newer=<日期时间> |
只将较指定日期更新的文件保存到备份文件里; |
--exclude=<范本样式> |
排除符合范本样式的文件。 |
常用组合命令
- 压缩文件(非打包) -czvf
# touch test.sh
# tar -czvf test.tar.gz test.sh
// 压缩 a.c文件为test.tar.gz
test.sh
// 返回结果 - 显示压缩文件内容 -tzvf
# tar -tzvf test.tar.gz
-rw-r--r-- root/root 0 2018-08-31 16:08 test.sh
// 返回结果
3. 解压文件
# tar -xzvf test.tar.gz
test.sh
// 返回结果
命令 gzip 解压缩文件
gzip 压缩的时候不保留原文件,并且只能压缩文件不能压缩目录,文件经它压缩过后,其名称后面会多出".gz"的扩展名
命令 gunzip 解压缩文件 ( 参数与gzip相同 )
命令:gunzip
语法:gunzip [已压缩的文件]
描述:用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为".gz"。事实上gunzip就是gzip的硬连接,因此不论是压缩或解压缩,都可通过 gzip -d 指令单独完成。
args | 或 | 说明 |
---|---|---|
-d | 或 --decompress 或 ----uncompress | 解开压缩文件 ==gunzip |
-L | 或 --license | 显示版本与版权信息 |
-q | 或 --quiet | 不显示警告信息 |
-V | 或 --version | 显示版本信息 |
–fast | 此参数的效果和指定"-1"参数相同 |
[root@localhost a]# ls //显示当前目录文件
a.c b.h d.cpp
[root@localhost a]# gzip * //压缩目录下的所有文件
[root@localhost a]# ls //显示当前目录文件
a.c.gz b.h.gz d.cpp.gz
[root@localhost a]# gzip -dv * //解压文件,并列出详细信息
a.c.gz: 0.0% -- replaced with a.c
b.h.gz: 0.0% -- replaced with b.h
d.cpp.gz: 0.0% -- replaced with d.cpp
[root@localhost a]# gzip -l * // 显示压缩文件的信息
compressed uncompressed ratio uncompressed_name
24 0 0.0% a.c
24 0 0.0% b.h
26 0 0.0% d.cpp
命令 zip 压缩文件
命令 zip 的格式是 windows 和 linux 通用的格式,可以压缩文件和目录,压缩目录时需要选项-r
,被压缩后的文件扩展名为.zip
args | 说明 |
---|---|
-d | delete entries in zipfile 从压缩文件内删除指定的文件 |
-q | quiet operation不显示指令执行过程 |
-r | recurse into directories 递归处理,将指定目录下的所有文件和子目录一并处理 |
-v | verbose operation/print version info 显示指令执行过程或显示版本信息 |
语法:zip 选项 [-r] [压缩后文件名称] [源文件]
将 /home/goo 这个目录下所有文件和文件夹压缩为当前目录下的 app.zip
# zip -q -r app.zip /home/goo
如果在我们在 /home/goo 目录下,可以执行以下命令:
# zip -q -r html.zip *
从压缩文件 cp.zip 中删除文件 a.c
# zip -dv cp.zip a.c
如果使用 zip 命令时报错:"-bash: zip: command not found",需要安装 zip 命令,输入:
# yum -y install zip
命令 unzip 解压文件
解压缩zip文件
语法:unzip [-cflptuvz] [-agCjLMnoqsVX] [-P<密码>] [.zip文件] [文件] [-d<目录>] [-x<文件>] 或 unzip [-Z]
args | 说明 |
---|---|
-l | list files(short format) 显示压缩文件内所包含的文件 |
-v | list verbosely / show version info 执行时时显示详细的信息 |
-q | quiet mode (-qq=>quieter) 执行时不显示任何信息 |
-d | directory 指定文件解压缩后所要存储的目录 |
实例:将当前目录下的test.zip解压,并将解压后的文件存入home/goos 目录下
# unzip test.zip -d /home/goos/
如果使用 unzip 命令时报错:"-bash: zip: command not found",需要安装 zip 命令,输入:
# yum -y install unzip