Linux压缩打包命令——tar、zip、unzip
tar命令
tar命令参数前面加”-"与不加“-”的区别:
tar命令参数前面加不加“-”执行命令的结果是没有区别的,区别只要是在于linux风格方面,加“-”属于System V风格,不加“-”属于BSD风格,所以在使用tar命令的时候它的参数加不加“-”结果是一样的,看个人的使用方式;
常用参数:
-z | 是否同时具有gz属性 |
---|---|
-j | 是否同时具有bz2属性 |
-J | 是否同时具有xz属性 |
-x | 解压缩、提取打包的内容 |
-t | 查看压缩包内容 |
-c | 建立一个压缩,打包文档 |
-C | 切换到指定目录,表示指定解压缩包的内容和打包的内容存放的目录 |
-v | 显示压缩或者打包的内容 |
-f | 使用文件名,在f后面要接压缩后的文件的名字,只要用到tar命令,-f选项是必须要用的,-f参数在使用的时候一定排在其他参数的后面,在最右边 |
-p | 保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件 |
-P | 保留绝对路径 |
一、打包
实例:
a.将file1文件和doc1文件和txt1文件打包为一个文件,名称为“test.tar”:
tar -cvf test.tar file1 doc1 txt1
b.查看test.tar文件的内容:
tar -tf test.tar
c.提取test.tar文件的内容到/opt目录下:
tar -xf test.tar -C /opt/
如果不用“-C”指定目录则会提取内容到当前目录
二、压缩
linux主要有三种压缩方式:
1.gzip:是公认的压缩这速度最快,压缩大文件的时候与其他的压缩方式相比更加明显,历史最久,应用最广泛的压缩方式
2.bzip:压缩形成的文件小,但是可用性不如gzip
3.xz:是最新的压缩方式,可以自动提供最佳的压缩率
建议的压缩的时候标明后缀:
参数 | 作用 | 命名方式 |
---|---|---|
-z | 用于gzip压缩方式 | 文件名.tar.gz |
-j | 用于bzip2压缩方式 | 文件名.tar.bz2 |
-J | 用于xz压缩方式 | 文件名.tar.xz |
用不同的压缩方式压缩test.apk文件
a.用gzip压缩方式将test.apk文件压缩为test.apk.tar.gz文件:
tar -zcvf test.apk.tar.gz test.apk
b.用bzip2的压缩方式将test.apk文件压缩为test.apk.tar.bz2文件:
tar -jcvf test.apk.tar.bz2 test.apk
注:如果缺少bzip2的包,需要安装bzip2软件包
三、解压
tar命令式一个很聪明的命令,我们在解压的时候不需要指明自己压缩的方式它会自己选择跟压缩方式对应的方式去解压。
a.将test.tar.gz解压到当前目录:
tar -xf test.tar.gz
在解压gz压缩方式压缩文件的时候并不需要加上-z,直接用参数-xf即可,另外两种压缩方式在解压的时候一样,因为tar命令会自动选择,解压之后压缩文件还在,如果不指定解压出来的文件保存在哪里,那么会直接解压在当前目录
b.指定解压出来的文件保存的目录,将test.tar.bz2文件解压在/opt/目录下:
tar -xf test.tar.bz2 -C /tmp/
tar: 从成员名中删除开头的“/”
这个并不是报错,是因为没有加上-P选项,没有保留原来的绝对路径去打包或者压缩,提取打包的内容跟解压一样
通过--exclude排除指定的文件或目录
将当前目录下的test目录打包,但是不打包test目录下的ll.txt文件:
tar -cvf test.tar --exclude=ll.txt test
压缩文件也是同理,想要排除指定的目录压缩或者打包也是同理
追加文件
将ex.txt 追加到 add.tar包中,用到-r
选项
tar -rf add.tar ex.txt
zip命令和unzip命令
zip命令
基本用法:zip [参数] [压缩包名] [压缩的目录或者文件的路径]
常用参数:
-m | 将文件压缩后,删除原文件 |
---|---|
-o | 将压缩文件内的所有文件的最新变动时间设为压缩的时间 |
-q | 安静模式,在压缩的时候不显示指令执行的过程 |
-r | 递归压缩,将自定目录下的所有子文件以及文件一起处理 |
-x | ”文件列表“,压缩时排除文件列表中的文件 |
实例:
a.压缩目录,将当前目录下的test目录压缩为名为test.zip压缩包:
1.正常压缩,不加-q选项,显示压缩的过程:
zip -r test.zip test
2.加上-q选项,安静模式输出,不显示压缩的过程。
b.压缩多个文件,将当前目录下的ceshi.txt文件和file.csv文件和fish.wps文件压缩为名为add.zip的压缩包:
因为压缩的全是文件,所以可以不用加上-r选项
zip add.zip ceshi.txt file.csv fish.wps
c.压缩文件跟目录,将当前目录下的ceshi.txt文件和fish.wps文件和Docs目录压缩成名为add.zip的压缩包:
zip -r add.zip ceshi.txt fish.wps Docs
d.将当前目录下的test目录压缩为add.zip压缩包,排除test目录下的ceshi.txt文件:
zip -r add.zip test -x "./test/ceshi.txt"
unzip命令
基本用法:
unzip [参数] [压缩文件] (-d [目录]) //如果不是用括号里面的内容,则解压文件在当前工作目录
常用参数:
-c | 将解压缩的结果显示到屏幕上(显示每一个目录下的每一个文件的内容),同时对字符做适当的转换,但是并没有解压压缩包 |
---|---|
-l | 显示压缩文件内所包含的文件 |
-t | 检查压缩文件是否正确 |
-v | 执行时显示压缩文件的详细信息 |
-q | 安静模式,执行时不显示任何信息 |
-d | 指定文件解压后存储的目录 |
-x | 指定不要处理压缩文件中的那些文件 |