Chinaunix首页 | 论坛 | 博客
  • 博客访问: 892726
  • 博文数量: 179
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1546
  • 用 户 组: 普通用户
  • 注册时间: 2015-01-27 11:05
个人简介

MySQL工程师 QQ:1815357042

文章分类

全部博文(179)

文章存档

2015年(179)

分类: LINUX

2015-02-08 11:49:49


在windows上我们最常见的不外乎这三种*.zip,*.rar,*.7z后缀的压缩文件,而在linux上面常见常用的除了以上这三种外,
还有*.gz,*.xz,*.bz2,*.tar,*.tar.gz,*.tar.xz,*tar.bz2。这么多咋这么复杂呢,下面简单说明下理一理就好了哈


文件后缀名 说明
*.zip zip程序打包压缩的文件
*.rar rar程序压缩的文件
*.7z bzip2程序压缩的文件
*.tar tar程序打包,未压缩的文件
*.gz gzip程序(GNU zip)压缩的文件
*.xz xz程序压缩的文件
*.bz2 bzip2程序压缩的文件
*.tar.gz tar打包,gzip程序压缩的文件
*.tar.xz tar打包,xz程序压缩的文件
*tar.bz2 tar打包,bzip2程序压缩的文件
*.tar.7z tar打包,7z程序压缩的文件
这里虽然讲了这么多种压缩文件,这么多个命令,不过不要害怕,我们一般只需要掌握几个命令即可,包括zip,rar,tar。
下面会依次介绍这几个命令及对应的解压命令


1.zip压缩打包程序
使用zip打包文件夹
  1. zip -r -q -o test.zip /home/li123
  1. [root@localhost ~]# zip -r -q -o test.zip /home/li123
  1. [root@localhost ~]# du -h test.zip
  1. [root@localhost ~]# file test.zip

上面命令将li123的home目录打包成一个文件,并查看了打包后文件的大小和类型。
第一行命令中,-r参数表示递归打包包含子目录的全部内容,-q参数表示为安静模式,即不向屏幕输出信息,-o,表示输出文件
需在其后紧跟打包输出文件名。

后面使用du命令查看打包后文件的大小


设置压缩级别为9和1(9最大,1最小),重新打包
  1. [root@localhost ~]# zip -r -9 -q -o li123_9.zip /home/li123 -x ~/*.zip
  1. [root@localhost ~]# zip -r -1 -q -o li123_1.zip /home/li123 -x ~/*.zip
这里添加了一个参数用于设置压缩级别-[1-9],1表示最快压缩但体积大,9表示体积最小但耗时最久。
最后那个-x是为了排除我们上一次创建的zip文件,否则又会被打包进这一次的压缩文件中
不过注意:这里只能使用绝对路径,否则不起作用!


然后我们再用du命令分别查看默认压缩级别、最低、最高压缩级别及未压缩的文件的大小
  1. [root@localhost ~]# du -h -d 0 *.zip ~ | sort
通过man 手册可知
-h,--human-readble(顾名思义,你可以试试不加的情况)
-d,--max-depth(所查看文件的深度)
CentOS会报错
  1. [root@localhost ~]# du -h -d 0 *.zip ~ | sort
  2. du: invalid option -- 'd'
  3. Try `du --help
这样就一目了然了嘛,你可以看到默认压缩级别应该是最高的,压缩与否效果很明显啊
不过你在环境中操作之后看到的大小可能跟图上的有些不同,因为在你使用过程中,会随时还生成一些缓存文件在当前用户的家目录中



创建加密zip包
使用-e参数可以创建加密压缩包
  1. [root@localhost ~]# zip -r -e -o root_encryption.zip /root
  2. Enter password:
  3. Verify password:
  4.   adding: root/ (stored 0%)
  5.   adding: root/install.log (deflated 76%)
  6.   adding: root/.rnd (stored 0%)
  7.   adding: root/.tcshrc (deflated 22%)
  8.   adding: root/testcat (stored 0%)
  9.   adding: root/env.txt (deflated 60%)
  10.   adding: root/.bash_history (deflated 74%)
  11.   adding: root/.bash_logout (stored 0%)
  12.   adding: root/anaconda-ks.cfg (deflated 39%)
  13.   adding: root/father/ (stored 0%)
  14.   adding: root/father/son/ (stored 0%)
  15.   adding: root/father/son/test2 (stored 0%)
  16.   adding: root/a.txt (deflated 38%)
  17.   adding: root/export.txt (deflated 64%)
  18.   adding: root/1 (stored 0%)
  19.   adding: root/set.txt (deflated 56%)
  20.   adding: root/.zshrc (deflated 51%)
  21.   adding: root/.bashrc (deflated 29%)
  22.   adding: root/.bash_profile (deflated 19%)
  23.   adding: root/.gnupg/ (stored 0%)
  24.   adding: root/.gnupg/pubring.gpg~ (stored 0%)
  25.   adding: root/.gnupg/pubring.gpg (stored 0%)
  26.   adding: root/.gnupg/gpg.conf (deflated 58%)
  27.   adding: root/.gnupg/trustdb.gpg (deflated 97%)
  28.   adding: root/.gnupg/secring.gpg (stored 0%)
  29.   adding: root/.cshrc (deflated 24%)
  30.   adding: root/install.log.syslog (deflated 85%)
  31.   adding: root/.viminfo (c79%)
deflated:抽取
注意: 关于zip命令,还有一点希望你注意,因为windows系统与Linux/Unix在文本文件格式上的一些兼容问题,比如换行符(为不可见字符)
在windows为CR+LF(Carriage-Return+Line-Feed:回车加换行),而在Linux/Unix上为LF(换行),所以如果在不加处理的情况下
在linux上编辑的文本,在windows系统上打开可能看起来是没有换行的。
如果你想让你在linux创建的zip压缩文件在windows上解压后没有任何问题,那么你还需要对命令做一些修改

  1. [root@localhost ~]# zip -r -l -o root_encryption.zip /root
这里你就需要加上-l参数将LF转换为CR+LF来达到以上目的



使用unzip命令解压缩zip文件
  1. [root@localhost ~]# unzip -l root_encryption.zip -d ziptest //解压到ziptest目录,没有就创建一个
注意: 使用unzip解压文件时我们同样应该注意兼容问题,不过这里我们关心的不再是上面的问题,而是中文编码的问题
通常windows系统上面创建的压缩文件,如果有有包含中文的文档或以中文作为文件名的文件时默认会采用GBK或其它编码
而linux上面默认使用的是UTF-8编码,如果不加任何处理,直接解压的话可能会出现中文乱码的问题(有时候它会自动帮你处理)
为了解决这个问题,我们可以在解压时指定编码类型


使用-O(英文字母,大写o)参数指定编码类型
unzip -O GBK 中文压缩文件.zip


rar打包压缩命令
rar也是windows上常用的一种压缩文件格式,在linux上可以使用rar和unrar工具分别创建和解压rar压缩包
先安装rar和unrar工具
sudo apt-get update
sudo apt-get install rar unrar


mkdir tmp
unrar e shiyanlou.rar tmp/
rar命令参数非常多,不过它在linux下面真心不好用



tar打包工具
在linux上面还是熟练掌握tar工具的使用才是王道啊,会用tar能就能搞定linux上绝大多数压缩文件包了。
不过前面提到了那么多种压缩工具,为什么说只掌握tar就够了呢。


首先你需要知道的是tar原本只是一个打包工具,只是同时还实现了对7z,gzip,xz,bzip2等工具的支持
这些压缩工具本身只能实现对文件或目录(单独压缩目录中的文件)的压缩,没有实现对文件的打包压缩
所以我们也无需再单独去学习其他几个工具掌握一个tar就好,而且tar的解压和压缩都是同一个命令,只需参数不同而已,比较方便使用。


下面先掌握tar命令一些基本的使用方式,即不进行压缩只是进行打包(创建归档文件)和解包的操作
创建一个tar包
  1. [root@localhost ~]# tar -cf root.tar ~
上面命令中,-c表示创建一个tar包文件,-f用于指定创建的文件名,注意文件名必须紧跟在-f参数之后,比如不能写成tar -fc root.tar
可以写成tar -f root.tar -c ~。你还可以加上-v参数以可视的的方式输出打包的文件。
上面会自动去掉表示绝对路径的/,你也可以使用-P保留绝对路径符


解包一个文件(-x参数)到指定路径的已存在目录(-C参数)
  1. [root@localhost ~]# mkdir tardir

  2. [root@localhost ~]# tar -xf root.tar -C tardir
只查看不解包文件使用-t参数
保留文件属性和跟随链接(符号链接或软链接)
有时候我们使用tar备份文件当你在其他主机还原时希望保留文件的属性(-p参数)和备份链接指向的源文件而不是链接本身(-h参数)


关于tar的打包和解包的操作讲得差不多了,现在开始玩玩压缩
对于创建不同的压缩格式的文件,对于tar来说是相当简单的,你需要的也只是换一个参数而已
这里我就以使用gzip工具创建*.tar.gz文件为例来说明


我们只需要在创建tar文件的基础上添加-z参数,使用gzip来压缩文件
  1. [root@localhost ~]# tar -czf root.tar.gz ~


解压*.tar.gz文件
  1. [root@localhost ~]# tar -xzf root.tar.gz


现在我们要使用其他的压缩工具创建或解压相应文件只需要更改一个参数即可:
压缩文件格式 参数
*.tar.gz -z
*.tar.xz -J
*tar.bz2 -j
tar命令的参数很多,不过常用的大概就是上述这些,需要了解更多你可以查看man手册获取更多帮助



阅读(2671) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~