Linux压缩及解压命令
一、文件打包和压缩命令介绍
linux系统文件压缩格式,常用的有*.tar.gz、*.gz、*.zip、*.tar,还有*.rar、.7z、.bz2、.tar.xz、.tar.bz2、.xz
二、zip压缩和unzip解压缩命令
1.zip压缩命令
格式:
zip filename.zip dirname
常用参数说明:
-r 递归打包包含子目录的全部内容
-q 不显示指令执行过程,安静模式
-o 表示输出文件,其后紧跟打包输出文件名
-v 显示指令执行过程或显示版本信息。
-m 将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。
-x<范本样式> 压缩时排除符合条件的文件。
-e 表示加密压缩
-d 从压缩文件内删除指定的文件。
-l 压缩文件时,把LF字符 置换成LF+CR字 符。
-ll 压缩文件时,把LF+CR字 符置换成LF字符。
-<压缩效率> 压缩效率是一个介于1-9的数值。
案例:
1)打包logs目录下的文件。进入logs目录进行打包
zip -o test.zip *.log
# 将 test 目录打包成一个文件
zip -r -q -o test.zip /home/test
# 使用 du 命令查看打包后文件的大小
du -h test.zip
# 使用 file 命令查看文件大小和类型
file test.zip
2)查找包含2019-09的log文件并打包成压缩文件
find . -name "*2019-09*" -type f | grep -v "txt" | grep -v "manager" |grep -v "localhost" | xargs zip catalina201909_backuplog.zip
find . -name "*2019-09*" -type f | grep -v "catalina" | xargs zip otherl201909_backup.zip
3)从压缩文件中删除指定文件
#删除打包文件中指定文件
zip -d test.zip test.txt
#删除打包文件中指定目录下的文件
zip -d test.zip test/test.log
4)向压缩文件中添加指定文件
# 注意:此命令相当于将指定文件移动到压缩文件中,源文件会被删除
zip -m test.zip localhost_access_log.2019-08-27.txt
5)压缩文件时排除指定文件
zip test.zip test/* -x test/test.log
6)设置压缩级别为9和1(9最大,1最小),重新打包
# 1表示最快压缩但体积大,9表示体积最小但耗时最久,-x 排除上一次我们创建的zip文件,路径必需为绝对路径
zip -r -9 -q -o test_9.zip /home/test -x ~/*.zip
zip -r -1 -q -o test_1.zip /home/test -x ~/*.zip
# 再用 du 命令分别查看默认压缩级别、最低、最高压缩级别及未压缩的文件的大小,-h 表示可读,-d 表示所查看文件的深度
du -h -d 0 *.zip ~ | sort
PS: 关于 zip 命令,因为 Windows 系统与 Linux/Unix 在文本文件格式上的一些兼容问题,比如换行符(为不可见字符),在 Windows 为 CR+LF(Carriage-Return+Line-Feed:回车加换行),而在 Linux/Unix 上为 LF(换行),所以如果在不加处理的情况下,在 Linux 上编辑的文本,在 Windows 系统上打开可能看起来是没有换行的。如果你想让你在 Linux 创建的 zip 压缩文件在 Windows 上解压后没有任何问题,那么你还需要对命令做一些修改
shell 中的变量有不同类型,可参与运算,有作用域限定
# 使用 -l 参数将 LF 转换为 CR+LF
zip -r -l -o test.zip /home/test
2..unzip解压命令
格式:
unzip filename.zip
参数说明:
-l 不解压,只显示压缩文件内所包含的文件
-P<密码> 使用zip的密码选项。
-q 执行时不显示任何信息。
-d 指定解压目录
-p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换
-t 检查压缩文件是否正确
-u 与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其它文件解压缩到目录中
-v 执行是时显示详细的信息
-z 仅显示压缩文件的备注文字
-a 对文本文件进行必要的字符转换
-b 不要对文本文件进行字符转换
-C 压缩文件中的文件名称区分大小写
-j 不处理压缩文件中原有的目录路径
-L 将压缩文件中的全部文件名改为小写
-M 将输出结果送到more程序处理
-n 解压缩时不要覆盖原有的文件
-o 不必先询问用户,unzip执行后覆盖原有文件
-O 指定编码格式
-s 将文件名中的空白字符转换为底线字符
-V 保留VMS的文件版本信息
-X 解压缩时同时回存文件原来的UID/GID
案例:
1)解压到当前目录
unzip test.zip
2)解压到指定目录,不输出详细文件信息(安静模式)
unzip -q test.zip -d test
3)不解压,只查看压缩文件内容
unzip -l test.zip
4)指定编码格式解压
unzip -O GBK 中文压缩文件.zip
三、tar打包命令
tar中文手册参考网址:http://linux.51yip.com/search/tar
在 Linux 上面常用的是 tar 工具,tar 原本只是一个打包工具,但同时实现了对 7z,gzip,xz,bzip2 等工具的支持,这些压缩工具本身只能实现对文件或目录(单独压缩目录中的文件)的压缩,没有实现对文件的打包压缩,tar 的解压和压缩都是同一个命令,只需参数不同,使用比较方便。
格式:
解包:tar zxvf filename.tar
打包:tar czvf filename.tar dirname
常用参数:
-c,--create 打包
-x, --extract, --get 解压
-d, --diff, --compare 比较存档与当前文件的不同之处
-z,--gzip, --gunzip, --ungzip 通过 gzip 过滤归档
-J,--xz 通过 xz过滤归档
-j, --bzip2 通过 bzip2 过滤归档
-y, --bzip2, --bunzip2 用 bzip2 对存档压缩或解压
-Z, --compress, --uncompress 用 compress 对存档压缩或解压
-C 指定解压目录
-t, --list 只查看,不解包,列出存档中的文件
-h, --dereference 不转储动态链接,转储动态链接指向的文件。
-p, --same-permissions, --preserve-permissions 展开所有保护信息,保留文件属性
-v, --verbose 显示详细处理文件信息
-f 指定创建的文件名(注意文件名必须紧跟在 -f 参数之后)
--version 显示tar版本
--exclude FILE 不把指定文件包含在内
-X, --exclude-from FILE 从指定文件中读入不想包含的文件的列表
-P, --absolute-paths 不要从文件名中去除 '/'
-u 更新
-r 表示增加文件的意思。
案例:
1)创建tar包
tar -cf test.tar .
2)解包一个文件 (-x参数) 到指定路径的已存在目录 (-C参数)
mkdir test
tar -xf test.tar -C test
3)查看打包文件内容,不解压
tar -tf test.tar
4)保留文件属性和跟随链接(符号链接或软链接),有时候我们使用tar备份文件当你在其他主机还原时希望保留文件的属性(-p参数)和备份链接指向的源文件而不是链接本身(-h参数)
tar -cphf test.tar test
5)以使用 gzip 工具创建 *.tar.gz 文件为例来说明,只需在创建 tar 文件的基础上添加 -z 参数,使用 gzip 来压缩文件
tar -czf test.tar.gz test
打包test文件不包括test目录下的test.txt文件
tar -czvf test.tar.gz test --exclude test/test.txt
6)解压 *.tar.gz 文件
tar -xzf test.tar.gz
7)要使用其他的压缩工具创建或解压相应文件只需要更改一个参数即可
|压缩文件格式 |参数| |:-----------:|:--:| |*.tar.gz | -z | |*.tar.xz | -J | |*tar.bz2 | -j |
8)相关解压命令
1、*.tar 用 tar –xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、*.tar.gz和*.tgz 用 tar –xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2 用 tar –xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar –xZf 解压
8、*.rar 用 unrar e解压
9、*.zip 用 unzip 解压
9)添加文件到压缩包中,将test.txt文件添加到test.tar归档文件中
tar -rf test.tar test.txt
10)更新test.tar中的test.txt文件
tar -uf test.tar test.txt
四、rar压缩打包和unrar解压命令
需要在Linux系统上安装才能使用rar和unrar命令
参考网址:https://www.cnblogs.com/findumars/p/8244997.html
下载地址:http://www.rarsoft.com/download.htm
使用wget命令下载(我这里下载的是64位的)
[root@VM_0_10_centos tmp]# wget https://www.rarlab.com/rar/rarlinux-x64-5.8.b2.tar.gz
Saving to: ‘rarlinux-x64-5.8.b2.tar.gz’
100%[=================================================================================>] 549,524 13.8KB/s in 65s
2019-10-12 15:28:36 (8.30 KB/s) - ‘rarlinux-x64-5.8.b2.tar.gz’ saved [549524/549524]
解压==编译==安装
[root@VM_0_10_centos tmp]# tar -zxvf rarlinux-x64-5.8.b2.tar.gz
[root@VM_0_10_centos tmp]# cd rar/
[root@VM_0_10_centos rar]# pwd
/tmp/rar
[root@VM_0_10_centos rar]# ls
acknow.txt default.sfx license.txt makefile order.htm rar rarfiles.lst rar.txt readme.txt unrar whatsnew.txt
[root@VM_0_10_centos rar]# make
mkdir -p /usr/local/bin
mkdir -p /usr/local/lib
cp rar unrar /usr/local/bin
cp rarfiles.lst /etc
cp default.sfx /usr/local/lib
案例:
1)从指定文件或目录创建压缩包或添加文件到压缩包
# 使用a参数添加一个目录~到一个归档文件中,如果该文件不存在就会自动创建
rar a test.rar .
PS:rar参数没有 ‘-’,如果加上会报错
2)从指定压缩包文件中删除某个文件
rar d test.rar test.txt
# 也可以使用正则匹配删除
rar d test.rar *.txt
3)查看不解压文件
rar l test.rar
4)unrar解压rar压缩文件
# 全路径解压
unrar x test.rar
# 去掉路径解压
mkdir tmp
unrar e test.rar tmp/
五、gz压缩和gunzip解压缩命令
解压1:gunzip filename.gz
解压2:gzip -d filename.gz
压缩:gzip filename
.tar.gz 和 .tgz
解压:tar zxvf filename.tar.gz
压缩:tar zcvf filename.tar.gz dirname
压缩多个文件:tar zcvf filename.tar.gz dirname1 dirname2 dirname3.....
#压缩文件和目录
gzip【源文件】 #压缩为 gz格式的压缩文件,源文件会消失
gzip -c【源文件】>【压缩文件】 #压缩为gz格式,源文件保留gzip -c cangls > cangls.gz #上面的例子
gzip -z【目录】 #压缩目录下所有的子文件,但是不能压缩目录
#解压文件
gunzip 【压缩文件名】
gzip -d 【压缩文件名】
#以上两种解压是一样的
六、bz2压缩命令
解压1:bzip2 -d filename.bz2
解压2:bunzip2 filename.bz2
压缩:bzip2 -z filename
.tar.bz2
解压:tar jxvf filename.tar.bz2
压缩:tar jcvf filename.tar.bz2 dirname
#压缩文件
bzip2【源文件】 #压缩为.bz2格式,不保存源文件
bzip2 -k【源文件】 #压缩之后保留源文件
#解压文件
bunzip2 【压缩文件名】
bzip -d 【压缩文件名】
#以上两种解压是一样的
七、bz命令
解压1:bzip2 -d filename.bz
解压2:bunzip2 filename.bz
.tar.bz
解压:tar jxvf filename.tar.bz
八、z命令
解压:uncompress filename.z
压缩:compress filename
.tar.z
解压:tar zxvf filename.tar.z
压缩:tar zcvf filename.tar.z dirname