Chinaunix首页 | 论坛 | 博客
  • 博客访问: 558880
  • 博文数量: 113
  • 博客积分: 7005
  • 博客等级: 少将
  • 技术积分: 1275
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-16 11:15
文章分类

全部博文(113)

文章存档

2008年(18)

2007年(17)

2006年(78)

我的朋友

分类: LINUX

2008-04-15 01:23:57

linux下常见压缩解压方法

一、rar文件
用法:   rar <命令> -<选项1> ….-<选项N>   <操作文档>    <文件…> <@文件列表…> <解压路径>

通常rar命令由一个主命令加若干选项(可选)构成,操作文档为操作施加的.rar文件对象,
文件或文件列表为对操作文档实现修饰的具体文件或目录(可选)。

rar常用命令主要有
a             添加文件到操作文档
eg. rar a test.rar file1.txt 若test.rar文件不存在,则打包file1.txt文件成test.rar
    rar a test.rar file2.txt 若test.rar文件已经存在,则添加file2.txt文件到test.rar中(这样
                              test.rar中就有两个文件了)
    注,如果操作文档中已有某文件的一份拷贝,则a命令更新该文件
        另,对目录也可以进行操作
eg. rar a test.rar dir1

c             对操作文档添加说明注释
eg. rar c test.rar
    (会出现Reading comment from stdin字样,然后输入一行或多行注释,以ctrl+d结束)

cf            添加文件注释,类似上面的c,不过这个是对压缩文档中每个文件进行注释

cw            将文档注释写入文件
eg. rar cw test.rar comment.txt

d             从文档中删除文件
eg. rar d test.rar file1.txt

e             将文件解压到当前目录
eg. rar e test.rar
    注,用e解压的话,不仅原来的file1.txt和file2.txt被解压到当前目录,就连dir1里面的所有文件
        也被解压到当前目录下,不能保持压缩前的目录结构,如果想保持压缩前的目录结构,用x解压


k             锁定文档
eg. rar k test.rar 锁定文档后,该文档就无法进行任何更新操作了

r             修复文档
eg. rar r test.rar
     当rar文件有问题时,可以尝试用该命令进行修复(鬼知道有多少用)

s             转换文档成自解压文档
eg. rar s test.rar
    会生成一个test.sfx的可执行文档,运行它的效果就相当于rar x test.rar,
    适合于向没有rar的用户传输文件

t             检测文档
eg. rar t test.rar
    检测test.rar的完整性,一般压缩完大型文件准备传输前最好用这个命令来确保文件的正确性

x             带路径解压文档中内容到当前目录
eg. rar x test.rar
    这样解压的话,dir1就会保持原来的目录结构

以上就是rar的常用命令,一个rar操作只能有一个命令,而选项却可以有多个。

rar选项有很多,在此无法一一说明,只示范经常使用的几个

cl            将文件名转换为小写
cu            将文件名转换为大写
eg. rar a -cl test.rar FILe.txt
    FILe.txt在添加进test.rar之后,变为file.txt

df            文档操作后删除源文件
eg. rar a -df test.rar file1.txt file2.txt dir1
    将file1.txt,file2.txt,dir1压缩到test.rar中之后,删除源文件

ed            不添加空目录
eg. rar a -ed test.rar dir1
    添加dir1到test.rar中时,不对空目录进行操作
    rar e -ed test.rar
    解压test.rar时,不生成空目录

k             锁定文件
eg. rar a -k test.rar file1.txt
    等价于rar a test.rar file1.txt
          rar k test.rar

m<0..5>       设定压缩比等级(0-存储,3-默认,5-最大)
eg. rar a -m0 test.rar dir1 dir2
    将dir1,dir2打包存储到test.rar,不进行实质上的压缩(速度奇快,适合于对无甚可压的文件进行操作
    比如avi,jpg等)
    rar a -m5 test.rar *.txt *.bmp
    将当前目录下的txt文件和bmp文件打包压缩到test.rar中,使用最大压缩比(最慢)

ms[ext;ext]   特定文件采用非压缩方式
eg. rar a -m5 -ms avi;jpg;jpeg test.rar /home
    将home目录下所有目录和文件归档到test.rar,采用最大压缩,但avi,jpg,jpeg文件不进行压缩
    (只是打包进test.rar,因为这些文件即使用最大压缩也压不了多少,不如直接打包节省时间)

o+            覆盖已有文件
o-            不覆盖已有文件
eg. rar x -o- test.rar
    解压test.rar文件,但是如果碰到以存在的文件则不覆盖

ol            将符号链接以链接文件保存,而不是普通文件
ow            保存或者恢复文件所有者的信息(username,group)
这两个是*nix系统特有的命令,很容易理解吧

p[password]   设定密码
eg. rar a test.rar *.txt -p prettygirl
    压缩文件设定密码为prettygirl,解压时无密码无法进行操作
    如果觉得明码密码太过暴露,可以使用
    rar a test.rar *.txt -p
    则rar程序会询问你要使用什么密码,不回显

s-            不使用固实压缩
    注,固实压缩就是压缩后文档内容不可变更的压缩方式,这和lock不一样。因为使用普通压缩
        要照顾以后的插入删除个别文件的需要,就要留下很多操作余地。而固实压缩则不可以对
        其内容进行任何更新,所以压缩比是最大的。

sfx[name]     创建自解压文件,这和先用a进行压缩,再用s转换效果是一样的。

t             压缩完毕后进行完整性检验
eg. rar a test.rar /home -t
    压缩完毕后进行检验,如果有问题则报错。

ta      仅对data日期后文件进行操作
tb      仅对data日期前文件进行操作
         注,date的格式为 YYYYMMDDHHMMSS 这样。

v[k,b] 分卷压缩,每卷大小由后面的size指定
eg. rar a -v15000k -m0 test xvid-fn.avi
        对xvid-fn.avi进行打包存储,每卷大小15000k(这种格式在网上发布dvdrip时很流行)
        生成的文件名为test.part1.rar,test.part2.rar….(rar 3.20版)

x       排除特定的文件
eg. rar x test.rar -x *.txt
    解压test.rar中除*.txt以外的文档
x@      同上,不过这次所有排除的文件放在list文件列表中

y             所有操作均回答yes
   例如有时解压时每碰到相同文件就问是否覆盖(Y/N),加上-y就可以默认选择Yes,不再询问
 
二、zip文件
 
语  法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>]

补充说明:zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有".zip"扩展名的压缩文件。
解压:unzip FileName.zip
压缩:zip FileName.zip DirName

参  数:
-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的数值。
 
 
三、

tar [-cxtzjvfpPN] 文件与目录 ....
参数:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!
因为不可能同时压缩与解压缩。
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
   例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成
   『 tar -zcvPf tfile sfile』才对喔!
-p :使用原文件的原来属性(属性不会依据使用者而变)
-P :可以使用绝对路径来压缩!
-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!
--exclude FILE:在压缩的过程中,不要将 FILE 打包!
范例:

范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar
[root@linux ~]#
tar -cvf /tmp/etc.tar /etc<==仅打包,不压缩!
[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc<==打包后,以 gzip 压缩
[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc<==打包后,以 bzip2 压缩
# 特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。
# 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~
# 如果加 j 参数,则以 .tar.bz2 来作为附档名啊~
# 上述指令在执行的时候,会显示一个警告讯息:
# 『tar: Removing leading `/" from member names』那是关於绝对路径的特殊设定。

范例二:查阅上述 /tmp/etc.tar.gz 文件内有哪些文件?
[root@linux ~]# tar -ztvf /tmp/etc.tar.gz
# 由於我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时,
# 就得要加上 z 这个参数了!这很重要的!

范例三:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下
[root@linux ~]# cd /usr/local/src
[root@linux src]# tar -zxvf /tmp/etc.tar.gz
# 在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说,
# 我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz ,
# 则解开的目录会在 /usr/local/src/etc 呢!另外,如果您进入 /usr/local/src/etc
# 则会发现,该目录下的文件属性与 /etc/ 可能会有所不同喔!

范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd
# 我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称,如果单只要一个文件,
# 就可以透过这个方式来下达!注意到! etc.tar.gz 内的根目录 / 是被拿掉了!

范例五:将 /etc/ 内的所有文件备份下来,并且保存其权限!
[root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc
# 这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时!

范例六:在 /home 当中,比 2005/06/01 新的文件才备份
[root@linux ~]# tar -N "2005/06/01" -zcvf home.tar.gz /home

范例七:我要备份 /home, /etc ,但不要 /home/dmtsai
[root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

范例八:将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件!
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -cvf - /etc | tar -xvf -
# 这个动作有点像是 cp -r /etc /tmp 啦~依旧是有其有用途的!
# 要注意的地方在於输出档变成 - 而输入档也变成 - ,又有一个 | 存在~
# 这分别代表 standard output, standard input 与管线命令啦!
# 这部分我们会在 Bash shell 时,再次提到这个指令跟大家再解释啰!

 
附:Linux下常见文件格式的压缩、解压小结
   .tar
  解包: tar xvf FileName.tar
  打包:tar cvf FileName.tar DirName
  (注:tar是打包,不是压缩!)
  ---------------------------------------------
  .gz
  解压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
  ---------------------------------------------
  .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
  ---------------------------------------------
  .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
  ---------------------------------------------
  .zip
  解压:unzip FileName.zip
  压缩:zip FileName.zip DirName
  ---------------------------------------------
  .rar
  解压:rar a FileName.rar
  压缩:r ar e FileName.rar
  
  rar请到: !
  解压后请将rar_static拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
  [root@www2 tmp]# cp rar_static /usr/bin/rar
  ---------------------------------------------
  .lha
  解压:lha -e FileName.lha
  压缩:lha -a FileName.lha FileName
  
  lha请到:~ishii/lhaunix/!
  >解压后请将lha拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
  [root@www2 tmp]# cp lha /usr/bin/
  ---------------------------------------------
  .rpm
  解包:rpm2cpio FileName.rpm | cpio -div
  ---------------------------------------------
  .deb
  解包:ar p FileName.deb data.tar.gz | tar zxf -
  ---------------------------------------------
阅读(2832) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~