文件打包压缩
2020-05-04 16:02:20来源:博客园 阅读 ()
文件打包压缩
自我感觉,文件压缩打包这块很好学,别看压缩命名多,好几个不常用,常用的几个选项基本都通用。就会产生一个很好的结果,只要学一个命令的选项,剩下的几个命令只要记住名字就可以了。 本篇的重点在tar命令,大部分网上的文件都是经过打包压缩处理过的。 linux中常见的压缩文件的扩展名:*.gz *.bz2 *.xz *.tar *.tar.gz *.tar.bz2 *.tar.xz *.tgz文件打包压缩
自我感觉,文件压缩打包这块很好学,别看压缩命名多,好几个不常用,常用的几个选项基本都通用。就会产生一个很好的结果,只要学一个命令的选项,剩下的几个命令只要记住名字就可以了。
本篇的重点在tar命令,大部分网上的文件都是经过打包压缩处理过的。
linux中常见的压缩文件的扩展名:*.gz *.bz2 *.xz *.tar *.tar.gz *.tar.bz2 *.tar.xz *.tgz *.Z *.tar.Z
0.compress/uncompress compress 压缩文件不会保留源文件,压缩后的文件后缀是.Z -d 解压缩,相当于uncompress,可以重定向以保留源文件 -c 输出压信息到屏幕,可以重定向以保留源文件 -v 显示详情 zcat命令 可以查看.Z和.gz的压缩文件内容 此命令太过久远了,基本上已经很少见*.Z的压缩文件了。而且使用gzip命令也可以解压*.Z压缩文件。 1.gzip/gunzip gzip压缩文件会删除源文件,生成.gz为后缀的压缩文件。 gzip [option]....FILE..... -c 把压缩文件数据流输出到屏幕上,可以使用重定向保存到文件中,用于保留源文件。 -d 解压缩,相当于gunzip -k 保留源文件,仅在centos8以后的版本中有效 -v 压缩后,可以显示出压缩比 -t 用于测试压缩包的完整性 -# 按照指定的压缩比压缩。默认为6,支持1-9 zcat、zmore、zless命令 在不解压.gz后缀的压缩文件的情况下查看压缩文件内容。zcat FILE.GZ zgrep命令 可以在解压的情况下直接搜索关键字 zgrep 关键字 /PATH/TO/COMPRESS.gz
示例:
1 #演示在不解压的情况下搜索关键字 2 [root@CentOS8 tmp]# zgrep http services.gz 3 # http://www.iana.org/assignments/port-numbers 4 http 80/tcp www www-http # WorldWideWeb HTTP 5 http 80/udp www www-http # HyperText Transfer Protocol 6 http 80/sctp # HyperText Transfer Protocol 7 https 443/tcp # http protocol over TLS/SSL 8 https 443/udp # http protocol over TLS/SSL 9 https 443/sctp # http protocol over TLS/SSL 10 gss-http 488/tcp 11 gss-http 488/udp 12 13 14 #-c选项和管道符结合使用,主要用于保存源文件 15 [root@CentOS8 tmp]# gzip -c services > services.gz 16 [root@CentOS8 tmp]# ll 17 total 824 18 -rwx------. 1 root root 1379 May 2 08:53 ks-script-drjaqc7p 19 -rw-r--r-- 1 root root 692241 May 3 17:35 services 20 -rw-r--r-- 1 root root 142549 May 3 18:02 services.gz
2.bzip2/bunzip2 bzip2压缩文件会删除源文件,生成.bz2为后缀的压缩文件。 bzip2 [option]....FILE..... -c 把压缩文件数据流输出到屏幕上,可以使用重定向保存到文件中,用于保留源文件。 -k 压缩后保留源文件,同时生成压缩文件。 -d 解压缩,相当于bunzip2 -# 按照指定的压缩比压缩。默认为6,支持1-9 -q 静默 压缩 -v 压缩后,显示出压缩比 -r 把目录下的文件分别进行独立压缩 bzcat/bzmore/bzless命令 在不解压.bz2后缀的压缩文件的情况下查看压缩文件内容,和zcat用法相同。 bzcat FILE.BZ2 bzgrep命令 在不解.bz2后缀的压缩文件的情况下搜索压缩包内容 bzgrep 关键字 /PATH/TO/COMPRESS.bz2
示例:
1 #保留源文件压缩,压缩后显示压缩比信息 2 [root@CentOS8 tmp]# bzip2 -kv services 3 services: 5.334:1, 1.500 bits/byte, 81.25% saved, 692241 in, 129788 out. 4 [root@CentOS8 tmp]# ll 5 total 952 6 -rwx------. 1 root root 1379 May 2 08:53 ks-script-drjaqc7p 7 -rw-r--r-- 1 root root 692241 May 3 18:15 services 8 -rw-r--r-- 1 root root 129788 May 3 18:15 services.bz2 9 -rw-r--r-- 1 root root 142549 May 3 18:02 services.gz 10 11 [root@CentOS8 tmp]# bunzip2 services.bz2
3.xz/unxz xz压缩文件会删除源文件,生成.xz为后缀的压缩文件。 xz [option]....FILE..... -c 把压缩文件数据流输出到屏幕上,可以使用重定向保存到文件中,用于保留源文件。 -k 压缩后保留源文件,同时生成压缩文件。 -d 解压缩,相当于unxz -# 按照指定的压缩比压缩。默认为6,支持1-9 -q 静默 压缩 -v 压缩后,显示压缩比等信息 xzcat/xzmore/xzless命令 在不解压.xz后缀的压缩文件的情况下查看压缩文件内容,和zcat用法相同。xzcat FILE.XZ xzgrep命令 在不解压的情况下搜索压缩包内容 xzgrep 关键字 /PATH/TO/COMPRESS.xz
示例:
#保留源文件压缩,并且输出压缩比等信息 [root@CentOS8 tmp]# xz -kv services services (1/1) 100 % 103.4 KiB / 676.0 KiB = 0.153 [root@CentOS8 tmp]# ll total 1056 -rw-r--r-- 1 root root 692241 May 3 18:15 services -rw-r--r-- 1 root root 129788 May 3 18:15 services.bz2 -rw-r--r-- 1 root root 142549 May 3 18:02 services.gz -rw-r--r-- 1 root root 105872 May 3 18:15 services.xz [root@CentOS8 tmp]# rm services #删除源文件 rm: remove regular file 'services'? y [root@CentOS8 tmp]# xz -dk services.xz #保留源文件解压缩 [root@CentOS8 tmp]# ll total 1056 -rw-r--r-- 1 root root 692241 May 3 18:15 services -rw-r--r-- 1 root root 129788 May 3 18:15 services.bz2 -rw-r--r-- 1 root root 142549 May 3 18:02 services.gz -rw-r--r-- 1 root root 105872 May 3 18:15 services.xz #使用xzgrep搜索压缩包 [root@CentOS8 tmp]# xzgrep http services.xz # http://www.iana.org/assignments/port-numbers http 80/tcp www www-http # WorldWideWeb HTTP http 80/udp www www-http # HyperText Transfer Protocol http 80/sctp # HyperText Transfer Protocol https 443/tcp # http protocol over TLS/SSL https 443/udp # http protocol over TLS/SSL https 443/sctp # http protocol over TLS/SSL #使用-l选项显示长格式信息 [root@CentOS8 tmp]# xz -l services.xz Strms Blocks Compressed Uncompressed Ratio Check Filename 1 1 103.4 KiB 676.0 KiB 0.153 CRC64 services.xz
4.zip/unzip zip一个及压缩打包于一身的压缩命令,而且还是各个操作系统通用的压缩命令。支持windows,unix,liunx。 zip [OPTION]... 压缩后的文件名.zip 要进行压缩的源文件 备注:如果要用zip进行压缩目录,需要指明目录下的文件名,如果不指明则会指压缩目录本身。例子:要使用 zip pam.d.zip /etc/pam.d/* 5.tar 用于打包的工具。能够把多个文件打包成一个文件。tar打包或者展开不会删除源文件 1.创建文件 tar -c -f -[jJz] /PATH/TO/SOMEFILE.tar FILE.... 备注:-[jJz]通常只在创建压缩文件的时候使用,解压缩tar会自动调用对应的压缩工具实现解压 2.展开文件 tar -x -f -[jJz] /PATH/TO/SOMEFILE.tar -C /PATH/TO/DIR 备注:在展开的时候其实是可以不用加-j/-z/-J选项,tar会自动调用对应的解压工具解压。 3.不展开显示打包文件的列表 tar -t -f -[jJz] /PATH/TO/SOMEFILE.tar 备注:在展开的时候其实是可以不用加-j -z -J 选项的,tar会自动调用对应的解压工具解压。 -c 创建打包文件 -x 展开打包文件 -t 列出打包文件的文件列表,而不展开 -f 指定要创建或展开的打包文件路径 -j 调用bzip2压缩工具 -J 调用xz压缩工具 -z 调用gzip压缩工具 -Z 调用compress压缩工具进行压缩 不允许同时出现,-j -J -z -Z -v 显示过程 -p 保留源文件的原始属性,只有管理员有权限 -P 保留绝对路径,就是允许贝恩数据中含有根目录。默认情况下是自动取消根目录 --xattrs 保留源文件的扩展属性 -C 把展开的文件保存到指定文件下,默认为当前目录。 --exclude=/PATH/TO/{SOMEDIR|SOMEFILE} 排除某些目录或文件不压缩
示例:
1 #使用-z压缩 2 [root@CentOS8 tmp]# tar -zcvf etc.gz /etc/* 3 tar: Removing leading `/' from member names 4 /etc/adjtime 5 tar: Removing leading `/' from hard link targets 6 /etc/aliases 7 /etc/alternatives/ 8 ... 9 #使用-j压缩,并保留源文件属性 10 [root@CentOS8 tmp]# tar -jcvpf etc.bz2 /etc/* 11 tar: Removing leading `/' from member names 12 /etc/adjtime 13 tar: Removing leading `/' from hard link targets 14 /etc/aliases 15 /etc/alternatives/ 16 /etc/alternatives/libnssckbi.so.x86_64 17 ... 18 #使用-J压缩,并保留源文件属性和facl属性,这里没有使用-v选项 19 [root@CentOS8 tmp]# tar --xattrs -Jcpf etc.xz /etc/* 20 tar: Removing leading `/' from member names 21 tar: Removing leading `/' from hard link targets 22 [root@CentOS8 tmp]# ll 23 total 11508 24 -rw-r--r-- 1 root root 3654689 May 3 19:05 etc.bz2 25 -rw-r--r-- 1 root root 5053462 May 3 19:03 etc.gz 26 -rw-r--r-- 1 root root 3069780 May 3 19:07 etc.xz 27 28 #使用-C选项指定解压目录 29 [root@CentOS8 tmp]# mkdir test 30 [root@CentOS8 tmp]# tar xf etc.gz -C /tmp/test
6.cpio 老牌打包解包工具 -o output模式,打包,将标准输入传入的文件名打包发送到标准输出 -i input模式,解包 -t 预览,查看标准输入传入的打包文件中的包含的文件列表 cpio -tv < NAME.cpio -A 向已存在的归档文件中追加文件 -v 显示详细过程 -d 如果有文件夹自动创建,常与-i一起使用,用于解压时自动创建目录 cpio -idv < etc.cpio -F filename 使用指定的文件名代替标准输入或输出 -I filename 对指定的归档文件名解压 -O filename 输出到指定归档文件名
1 #示例演示cpio不会区分绝对路径和相对路径 2 [root@CentOS8 /]# find ./etc | cpio -H newc -o > /tmp/etc.cpio 3 40756 blocks 4 [root@CentOS8 /]# find /etc | cpio -H newc -o > /tmp/etc2.cpio 5 40757 blocks 6 [root@CentOS8 /]# cd /tmp 7 [root@CentOS8 tmp]# ls 8 boot.cpio etc2.cpio etc.cpio 9 [root@CentOS8 tmp]# cpio -tv < etc.cpio 10 drwxr-xr-x 78 root root 0 May 3 18:14 etc 11 lrwxrwxrwx 1 root root 19 May 2 08:51 etc/mtab -> ../proc/self/mounts 12 -rw-r--r-- 1 root root 615 May 2 08:50 etc/fstab 13 -rw------- 1 root root 0 May 2 08:50 etc/crypttab 14 -rw-r--r-- 1 root root 69 May 3 17:31 etc/resolv.conf 15 。。。 16 [root@CentOS8 tmp]# cpio -tv < etc2.cpio 17 drwxr-xr-x 78 root root 0 May 3 18:14 /etc 18 lrwxrwxrwx 1 root root 19 May 2 08:51 /etc/mtab -> ../proc/self/mounts 19 -rw-r--r-- 1 root root 615 May 2 08:50 /etc/fstab 20 -rw------- 1 root root 0 May 2 08:50 /etc/crypttab 21 -rw-r--r-- 1 root root 69 May 3 17:31 /etc/resolv.conf 22 drwxr-xr-x 8 root root 0 May 2 08:51 /etc/dnf 23 #对比发现,使用find /etc生成cpio文件中竟然会保留根目录,如果解压的时候就会覆盖对应根目录下的文件,很危险 24 #而使用find ./etc生成的cpio文件中没有保留根目录。 25 26 #解压etc.cpio 27 [root@CentOS8 tmp]# ls 28 boot.cpio etc2.cpio etc.cpio 29 [root@CentOS8 tmp]# mkdir test 30 [root@CentOS8 tmp]# cd test 31 [root@CentOS8 test]# cpio -id <../etc.cpio 32 40756 blocks 33 [root@CentOS8 test]# ls 34 etc
关于时间成本: 通过下面小示例可以看到,使用gzip、bzip2、xz压缩同一个文件,耗费的时间长短。xz消耗的时间最长,gzip消耗的时间最短。
1 [root@CentOS8 tmp]# rm -fr * 2 [root@CentOS8 tmp]# ls 3 [root@CentOS8 tmp]# cp /etc/services . 4 [root@CentOS8 tmp]# ls 5 services 6 [root@CentOS8 tmp]# time gzip -k services ;time bzip2 -k services ;time xz -k services 7 8 real 0m0.016s #使用gzip压缩消耗的时间0.016s 9 user 0m0.013s 10 sys 0m0.003s 11 12 real 0m0.036s #使用bzip2压缩消耗的时间0.036s 13 user 0m0.025s 14 sys 0m0.010s 15 16 real 0m0.184s #使用xz压缩消耗的时间0.184s 17 user 0m0.107s 18 sys 0m0.077s 19 [root@CentOS8 tmp]# ll 20 total 1052 21 -rw-r--r-- 1 root root 692241 May 3 18:36 services 22 -rw-r--r-- 1 root root 129788 May 3 18:36 services.bz2 23 -rw-r--r-- 1 root root 142549 May 3 18:36 services.gz 24 -rw-r--r-- 1 root root 105872 May 3 18:36 services.xz
总结一下:
linux中常见的压缩文件的扩展名:*.gz *.bz2 *.xz *.tar *.tar.gz *.tar.bz2 *.tar.xz *.tgz *.Z *.tar.Z
常见的压缩命令有:gzip bzip2 xz。其中压缩比率最好的是xz,但是消耗的时间也是最高的。需要综合考虑时间成本和CPU性能。
几个选项基本上都通用:-d 解压 -v 显示详细过程 -c 输出内容到屏幕 -k保留源文件
tar可以打包文件和目录,打包时可以调用gzip bzip2 xz进行压缩
压缩: tar -[zjJ]cv -f filename.后缀 要被压缩的文件或目录
查询: tar -[zjJ]tv -f filename.后缀
解压: tar -[zjJ]xv -f filename.后缀 -C /PATH/TO/SOMEDIR
cpio命令在压缩的时候需要配合find命令一起使用。注意使用相对路径
原文链接:https://www.cnblogs.com/fengciaimei/p/12825392.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 文件压缩和打包 2020-06-11
- 厉害了!知道这样重命名文件都是大佬级别! 2020-06-09
- 一个骚命令防止你的文件被误删除! 2020-06-08
- linux文件权限和群组 2020-06-04
- 【再学Linux】第5章用户身份与文件权限 2020-06-03
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash