Linux下解压缩分好几种方法和软件,可我只喜欢取其中两瓢饮。编不下去了,记录如下:
[mark_c]最常用命令举例:[/mark_c]
#将/var/www目录打包并压缩到当前目录的xxx.tar.gz
tar -czvf xxx.tar.gz /var/www
#将/var/www目录打包并压缩到/var/www的xxx.tar.gz
#注意,不建议这种方式,这种方式压缩包内会保留路径,建议cd到要压缩文件夹的上一级目录压缩,压缩文件在当前目录进行。
tar -czvf /var/www/xxx.tar.gz /var/www
#将当前目录下的xxx.tar.gz解压到/var/www目录中
tar -xzvf xxx.tar.gz /var/www
#将当前目录下的xxx.zip解压到/var/www目录中
unzip -o xxx.zip /var/www
#将当前目录下的xxx.zip解压到当前目录中
unzip -o xxx.zip
#将当前目录下的abc12.zip、abc23.zip、abc34.zip同时解压到当前目录
unzip abc\*.zip
#将当前目录下的mydata文件夹压缩成mydata.zip
zip -r mydata.zip mydata
#将当前目录下的abc文件夹和123.txt压缩成为abc123.zip
zip -r abc123.zip abc 123.txt
#查看当前目录下wwwroot.zip中的内容
unzip -v wwwroot.zip
[mark_a]一、tar命令:[/mark_a]
解析:组成部分是tar+参数+(目录)名称+打包压缩的文件(夹)的路径,举例如下:
常见必须参数如下:
-A 新增压缩文件到已存在的压缩
-c 建立新的压缩文件
-d 记录文件的差别
-r 添加文件到已经压缩的文件
-u 添加改变了和现有的文件到已经存在的压缩文件
-x 从压缩的文件中提取文件
-t 显示压缩文件的内容
-z 支持gzip解压文件
-j 支持bzip2解压文件
-Z 支持compress解压文件
-v 显示操作过程
-l 文件系统边界设置
-k 保留原有文件不覆盖
-m 保留文件不被覆盖
-W 确认压缩文件的正确性
常用命令展示之压缩:
tar cf hhh.tar hhh # 仅仅打包
tar jcf hhh.tar.bz2 hhh # 压缩打包
tar czf hhh.tar.gz hhh # 压缩打包
zip hhh.zip.gz hhh # 压缩打包
gzip messages # 仅压缩文件【默认删除源文件】
常用命令展示之查看压缩包内容:
tar ztvf hhh.tar.gz
tar jtvf hhh.tar.bz2
tar tvf hhh.tar
常用命令展示之压缩包解压:
tar xf hhh.tar hhh
tar jxf hhh.tar.bz2 hhh
tar xzf hhh.tar.gz hhh
unzip hhh.zip hhh
其他常用命令举例:
#只将 /tar 内的部分文件解压出来
tar xzf ftl.tar.gz ftl/hhh.tar
#文件备份下来,并且保存其权限
tar vzvfp ftl.tar.gz ftl.log hhh.log run.log 【-p参数保存属性】
tar xzvfp ftl.tar.gz 【-p参数保存属性】
#在文件夹当中,比某个日期新的文件才备份
tar -N “2018/10/20” -czf hhh.tgz /tmp 【-N newer】
#备份文件夹内容是排除部分文件
tar –exclude scf/service -zcvf scf.tar.gz scf/* 【–exclude】
#添加文件到已经压缩的文件
tar -cvfr ftl.tar.gz hhh.tgz 【-r 添加文件到已压缩文件】
[mark_b]二、zip和unzip命令[/mark_b]
zip命令
zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有”.zip”扩展名 的压缩文件。
选项:
-A 调整可执行的自动解压缩文件。
-b 指定暂时存放文件的目录。
-c 替每个被压缩的文件加上注释。
-d 从压缩文件内删除指定的文件。
-D 压缩文件内不建立目录名称。
-f 此参数的效果和指定”-u”参 数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。
-F 尝试修复已损坏的压缩文件。
-g 将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。
-h 在线帮助。
-i 只压缩符合条件的文件。
-j 只保存文件名称及其内容,而不存放任何目录名称。
-J 删除压缩文件前面不必要的数据。
-k 使用MS-DOS兼容格式的文件名称。
-l 压缩文件时,把LF字符置换成LF+CR字 符。
-ll 压缩文件时,把LF+CR字符置换成LF字符。
-L 显示版权信息。
-m 将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。
-n 不压缩具有特定字尾字符串的文件。
-o 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。
-q 不显示指令执行过程。
-r 递归处理,将指定目录下的所有文件和子目录一并处理。
-S 包含系统和隐藏文件。
-t 把压缩文件的日期设成指定的日期。
-T 检查备份文件内的每个文件是否正确无误。
-u 更换较新的文件到压缩文件内。
-v 显示指令执行过程或显示版本信息。
-V 保存VMS操作系统的文件属性。
-w 在文件名称里假如版本编号,本参数仅在VMS操 作系统下有效。
-x 压缩时排除符合条件的文件。
-X 不保存额外的文件属性。
-y 直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。
-z 替压缩文件加上注释。
-$ 保存第一个被压缩文件所在磁盘的卷册名称。
- 压缩效率是一个介于1-9的 数值。
例子:
1. 压缩ltmain.sh文件
[root@monitor rrdtool-1.3.4]# zip test1.zip ltmain.sh
adding: ltmain.sh (deflated 75%)
[root@monitor rrdtool-1.3.4]# ll ltmain.sh test1.zip
-rw-r–r– 1 1003 1001 199991 Feb 8 2008 ltmain.sh
-rw-r–r– 1 root root 49771 Dec 21 13:52 test1.zip
2. 压缩效率分别为3和9
[root@monitor rrdtool-1.3.4]#zip test2.zip -3 ltmain.sh
[root@monitor rrdtool-1.3.4]#zip test2.zip -9 ltmain.sh
[root@monitor rrdtool-1.3.4]# ll ltmain.sh test*.zip
-rw-r–r– 1 1003 1001 199991 Feb 8 2008 ltmain.sh
-rw-r–r– 1 root root 49771 Dec 21 13:52 test1.zip
-rw-r–r– 1 root root 56782 Dec 21 14:07 test2.zip
-rw-r–r– 1 root root 49443 Dec 21 14:07 test3.zip
注:
压缩率(Compression ratio),描述压缩文件的效果名,是文件压缩后的大小与压缩前的大小之比,
例如:把100m的文件压缩后是90m,压缩率为90/100*100%=90%,压缩率一般是越小越好,但是压得越小,解压时间越长。压缩效率(compression efficiency)越大压缩后的文件越小,解压时间越长。
3. 将当前目录下的所有文件和文件夹全部压缩成test.zip文件,-r表示递归压缩子目录下所有文件
[root@monitor rrdtool-1.3.4]# zip -r test.zip ./*
4. 打包目录
[root@monitor rrdtool-1.3.4]# zip test2.zip doc/*
5. 删除压缩文件test.zip中的Makefile.am文件
[root@monitor rrdtool-1.3.4]# zip -d test.zip Makefile.am
deleting: Makefile.am
6. 向压缩文件test.zip中添加rrdtool.spec文件
[root@monitor rrdtool-1.3.4]# zip -m test.zip rrdtool.spec
updating: rrdtool.spec (deflated 68%)
7. 压缩文件时排除某个文件
[root@monitor tar]# zip test3.zip rrdtool-1.3.4 -x ltmain.sh
unzip命令
unzip为.zip压缩文件的解压缩程序
选项:
-c 将解压缩的结果显示到屏幕上,并对字符做适当的转换。
-f 更新现有的文件。
-l 显示压缩文件内所包含的文件。
-p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。
-t 检查压缩文件是否正确,但不解压。
-u 与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。
-v 执行是时显示详细的信息。或查看压缩文件目录,但不解压。
-z 仅显示压缩文件的备注文字。
-a 对文本文件进行必要的字符转换。
-b 不要对文本文件进行字符转换。
-C 压缩文件中的文件名称区分大小写。
-j 不处理压缩文件中原有的目录路径。
-L 将压缩文件中的全部文件名改为小写。
-M 将输出结果送到more程 序处理。
-n 解压缩时不要覆盖原有的文件。
-o 不必先询问用户,unzip执行后覆盖原有文件。
-P 使用zip的密码选项。
-q 执行时不显示任何信息。
-s 将文件名中的空白字符转换为底线字符。
-V 保留VMS的文件版本信息。
-X 解压缩时同时回存文件原来的UID/GID。
[.zip文件] 指定.zip压缩文件。
[文件] 指定要处理.zip压缩文件中的哪些文件。
-d 指定文件解压缩后所要存储的目录。
-x 指定不要处理.zip压缩文件中的哪些文件。
-Z unzip -Z等于执行zipinfo指令。
例子:
1. 将压缩文件text.zip在当前目录下解压缩。
[root@mysql test]# unzip test.zip
2. 将压缩文件text.zip在指定目录/tmp下解压缩,如果已有相同的文件存在,要求unzip命令不覆盖原先的文件。
[root@mysql test]# unzip -n test.zip -d /tmp
3. 查看压缩文件目录,但不解压。
[root@mysql test]# unzip -v test.zip
4. 将压缩文件test.zip在指定目录tmp下解压缩,如果已有相同的文件存在,要求unzip命令覆盖原先的文件。
[root@mysql test]# unzip -o test.zip -d tmp/
5.解压当前目录下的所有zip文件
[root@mysql test]# unzip “*.zip”
[root@mysql test]# ls *.zip | xargs -n1 unzip