设为首页 收藏本站
查看: 452|回复: 0

[经验分享] Linux压缩和解压缩命令

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-4-27 09:03:17 | 显示全部楼层 |阅读模式
Linux中常用的有3种压缩工具gzip,bzip2,xz,最早出现的是gzip,压缩比也不如后两者,xz最后出现,压缩比也是最佳的。

1、gzip(后缀名.gz)
         -d                           #解压缩(gunzip)
         -c                           #将压缩后的结果输出至标准输出
                                            gzip -c /path/to/somefile > /path/to/filename.gz
         -num                     #num指定压缩比(0-9),默认为6
         zcat filename.gz    #直接查看gzip压缩后的文件的内容
1
2
3
4
5
6
[iyunv@baby-CentOS abc]# gzip -c /etc/passwd > ./passwd
[iyunv@baby-CentOS abc]# zcat passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
.....
.....





2、bzip2(后缀名.bz2)


         -d                              #解压缩(bunzip2)
         -c                               #将压缩后的结果输出至标准输出
         -num                         #num指定压缩比(0-9),默认为6
         -k                               #保留原文件
         bzcat filename.bz2    #直接查看gzip压缩后的文件的内容
   
3、zip(后缀名.xz)
         -d                               #解压缩(unxz)
         xzcat                           #直接查看gzip压缩后的文件的内容

         其他选项与bzip2类似。


归档工具:tar
      能够实现将多个文件打包成为单个文件,然后进行压缩
         -c                     #打包文件
         -x                     #加压缩或解包功能,搭配-C选项可在指定目录中解开打包文件
         -t                     #直接查看打包文件(查看文件名)
                                 -c,-t,-x这3个选项不可同时使用  
         -v                     #显示解压或打包过程的详细信息
         -f filename       #在打包过程中filename为打包后生成的文件名,在解压过程中,filename为需要被处理的打包文件
       -C dirname#在指定目录中解开打包文件
         -z                     #通过gzip进行压缩
         -j                      #通过bzip2进行压缩
         -J                     #通过xz进行压缩
         -p(小写)       #保留备份数据的原本权限与属性
         -P(大写)       #保留绝对路径
备份/etc目录
1
2
3
4
5
6
7
8
9
[iyunv@baby-CentOS abc]# tar -zc -f etc.tar.gz /etc > /dev/null 2>&1
[iyunv@baby-CentOS abc]# tar -jc -f etc.tar.bz2 /etc > /dev/null 2>&1
[iyunv@baby-CentOS abc]# tar -Jc -f etc.tar.xz /etc > /dev/null 2>&1
[iyunv@baby-CentOS abc]# ll -h
total 23M
-rw-r--r--    1 root root 8.3M Apr 26 09:31 etc.tar.bz2
-rw-r--r--    1 root root 9.6M Apr 26 09:31 etc.tar.gz
-rw-r--r--    1 root root 5.0M Apr 26 09:32 etc.tar.xz
.........



这里可见3种压缩方式在压缩比上的差异。



查看压缩包中的文件名
1
2
3
4
5
6
7
[iyunv@baby-CentOS abc]# tar -tJ -f etc.tar.xz | head
etc/
etc/sysctl.conf
etc/rpm/
etc/rpm/macros.prelink
etc/rpm/macros.texlive
........



加上-v后可查看文件的详细属性
1
2
3
4
5
6
[iyunv@baby-CentOS abc]# tar -tvJ -f etc.tar.xz | head
drwxr-xr-x root/root         0 2015-04-26 05:55 etc/
-rw-r--r-- root/root      1150 2013-11-23 05:20 etc/sysctl.conf
drwxr-xr-x root/root         0 2015-03-25 04:39 etc/rpm/
-rw-r--r-- root/root       297 2013-08-19 20:36 etc/rpm/macros.prelink
-rw-r--r-- root/root       173 2011-12-08 02:05 etc/rpm/macros.texlive



解压到指定的目录下

1
2
3
[iyunv@baby-CentOS abc]# tar -xJ -f etc.tar.xz -C ./etc/
[iyunv@baby-CentOS abc]# ll -d etc
drwxr-xr-x. 127 root root 12288 Apr 26 09:39 etc





还有一种比较特殊的备份工具cpio,它可以备份任何文件,但是它需要依靠管道来获取需要备份的文件,通常和find配合使用。
cpio:
-o#将数据输出到文件和设备上(备份使用的选项)
-B#Blocks增加至5120bytes,默认是512bytes(这样可让专注速度加快)
-i#将数据从备份文件中提取(用于还原)
-d#自动新建目录
-u#自动将较新的文件覆盖
-t#配合-i查看备份文件内容
-v#显示详细过程
-c#以portable format方式存储


备份/etc目录下两天之内被改动过的文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[iyunv@baby-CentOS abc]# find /etc/ -mtime -2 | cpio -ovcB > ./etc.cpio
/etc/
/etc/blkid
/etc/blkid/blkid.tab
/etc/mtab
/etc/gconf/gconf.xml.defaults
/etc/gconf/gconf.xml.mandatory
/etc/gconf/gconf.xml.system
/etc/resolv.conf
/etc/pki/nssdb
/etc/adjtime
1 block
[iyunv@baby-CentOS abc]# ll etc.cpio
-rw-r--r-- 1 root root 5120 Apr 26 10:01 etc.cpio



查看备份的文件,注意里面的文件名都是绝对路径的,若直接还原会覆盖原有文件。

1
2
3
4
5
6
[iyunv@baby-CentOS abc]# cpio -ivct < etc.cpio
drwxr-xr-x 126 root     root            0 Apr 26 05:55 /etc/
drwxr-xr-x   2 root     root            0 Apr 25 14:57 /etc/blkid
-rw-r--r--   1 root     root          484 Apr 25 14:57 /etc/blkid/blkid.tab
-rw-r--r--   1 root     root          555 Apr 26 05:55 /etc/mtab
.......



用--no-absolute-filenames还原至当前目录下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[iyunv@baby-CentOS etc]# cpio -ivcd --no-absolute-filenames < ../etc.cpio
cpio: Removing leading `/' from member names
etc
etc/blkid
etc/blkid/blkid.tab
etc/mtab
etc/gconf/gconf.xml.defaults
etc/gconf/gconf.xml.mandatory
etc/gconf/gconf.xml.system
etc/resolv.conf
etc/pki/nssdb
etc/adjtime
6 blocks
[iyunv@baby-CentOS etc]# ll etc
total 24
-rw-r--r-- 1 root root   44 Apr 26 10:09 adjtime
drwxr-xr-x 2 root root 4096 Apr 26 10:09 blkid
drwxr-xr-x 5 root root 4096 Apr 26 10:09 gconf
-rw-r--r-- 1 root root  555 Apr 26 10:09 mtab
drwxr-xr-x 3 root root 4096 Apr 26 10:09 pki
-rw-r--r-- 1 root root   79 Apr 26 10:09 resolv.conf









运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-60999-1-1.html 上篇帖子: linux命令行安装VmwareTools(CentOS) 下篇帖子: Linux图形化界面的安装以及脚本 Linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表