linux下的压缩与解压
摘要:主要说明在linux下的常用的压缩和解压程序的用法。
在压缩指令中最早的要算是compress了,但现在它基本上不是预设的压缩指令了。
后来被gzip和bzip代替了,而这两位兄弟只能把文件一个一个的压缩,
有时我们需要把一大堆的文件压缩成一个包时,就不方便了。而tar本身是没有压缩功能的,
它只有打包的功能,就是把一堆文件打在一起,如果要压缩的话需要借助gzip,bzip等压缩程序。
不过现在的tar把这些压缩软件加在了自身中,只要加上参数就可以解压。
compress    (.Z)
如果看到.Z文件,就是用compress压缩而来的。
# compress [-dcr] 档案或目录
參數:
-d  :解压
-r  :压缩目录
-c  :解压到标准输出
例子:
#compress data.txt          #data.txt.Z
#compress -d data.txt.Z     #解压后得到data.txt
#compress -c data.txt > data.txt.back.Z     #把文件压缩到另一个文件做备份而不用默认文件
====================================================
gzip, zcat, gunzip
如果看到以.gz结尾的文件,那么就是gzip压缩而来的。
#gzip [-cdtlr#f] filename
#gunzip [-ctlrf] file.gz (.gz, -gz, .z, -z, _z or .Z , .tgz, tar.Z ,tar.gz)
#zcat [-hf] file.gz (相当于 gzip -c)
参数:
-c : 把压缩/解压后的文件内容输出到标准输出
-d : 解压
-t : 检查压缩包是否有错误
-l : 显示压缩率
-r : 进入子目录进行压缩
-# : 指定压缩等级-1最快,-9 最慢但最好
-f : 如果被压缩的文件存在,将不提示用户,直接强迫覆盖
例子:
-----------------------------------------------------------
#gzip -c file > file.back.gz        #原文件不变,生成一个gz的备份文件
#gzip file                          #生成file.gz 原文件被覆盖
#gzip -d file.back.gz               #解压得到file.back
#gunzip file.back.gz                #解压得到file.back
#gzip -9 -c file > file.back.gz     #用最好的压缩率压缩
#gzip -r dirname                    #得到的将是每个文件下的各个文件的.gz文件
[zhengxh@hoverzg aa]$ gzip -r aa
[zhengxh@hoverzg aa]$ ls
bb  cc  cc.back
[zhengxh@hoverzg aa]$ ls bb/*
bb/bb.gz
bb/ee:
ee.gz
[zhengxh@hoverzg stdshell]$ cd aa
[zhengxh@hoverzg aa]$ gzip -l -r .
compressed        uncompressed  ratio uncompressed_name
44                  76  69.7% ./bb/ee/ee
39                  62  71.0% ./bb/bb
[zhengxh@hoverzg aa]$ ls
bb  cc  cc.back  cc.back.gz
[zhengxh@hoverzg aa]$ zcat cc.back.gz
14052207006 | 2007-12-11 12:33:30.093594 | 8 days 03:28:08.571074
...
----------------------------------------------------------------
====================================================
bzip2, bzcat
如何有文件以.bz, .bz2, .tbz, .tbz2, .bz2结尾的,就可以用bzip2来进行解压/压缩。
其语法如下:
bzip2 [ -cdfkstz123456789 ] [ filenames ...  ]
bunzip2 [ -fkc ] [ filenames ...  ]
bzcat [ -s ] [ filenames ...  ]
-d        解压(相当于bunzip2)
-z        压缩
-k        不删除原来的文件,生成一个新的压缩文件
-f        强制执行
-t        检查文件的完整性
-c        把压缩/解压后的内容输出到标准输出
-s                  减少内存的使用
-1 .. -9            压缩率
--fast              相当于 -1
--best              相当于 -9
例子:
----------------------------------------------------------------
[zhengxh@hoverzg aa]$ bzip2 -k cc
[zhengxh@hoverzg aa]$ ls
bb  cc  cc.back.gz  cc.bz2
[zhengxh@hoverzg aa]$ bzip2 -z cc
[zhengxh@hoverzg aa]$ ls
bb  cc.back.gz  cc.bz2
[zhengxh@hoverzg aa]$ bzip2 -dc cc.bz2
14052207006 | 2007-12-11 12:33:30.093594 | 8 days 03:28:08.571074
...
[zhengxh@hoverzg aa]$ bunzip2 -c cc.bz2
14052207006 | 2007-12-11 12:33:30.093594 | 8 days 03:28:08.571074
...
[zhengxh@hoverzg aa]$ bzip2 -9 -c cc > cc.back.bz2
[zhengxh@hoverzg aa]$ ls
cc  cc.back.bz2
[zhengxh@hoverzg aa]$ bunzip2 -d -c cc.back.bz2
14052207006 | 2007-12-11 12:33:30.093594 | 8 days 03:28:08.571074
...
[zhengxh@hoverzg aa]$ bzcat -s cc.back.bz2
14052207006 | 2007-12-11 12:33:30.093594 | 8 days 03:28:08.571074
...
--------------------------------------------------------------
====================================================
tar
tar 本身没有压缩的功能,它的作用是把一大堆的文件打包。
但通过不同的参数它可以调用其他的压缩程序比如说:bzip2/gzip等,是的现在它也具有压缩功能。
它的参数比较多,让我慢慢道来:
tar [OPTION...] [FILE]...
主操作选项:
-c, --create               创建
-x, --extract              解开一个备份包
-t, --list                 查看tarfile里的文件列表
注意: 以上三个参数只能有一个,因为不能同时解压和压缩呀!
-r, --append               向(.tar)包追加一个文件
文件格式选项:
-j, --bzip2                是否同時具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-z, --gzip                 是否同時具有 gzip 的属性?亦即是否需要用 gzip压缩?
-Z, --compress             是否同時具有 compress 的属性?亦即是否需要用 compress压缩?
-f, --file                 注意,在f之后要立即接压缩包的文件名!不要再加参数!
文件属性:
-p, --perseve              保留文件原来的属性
-v                         显示处理过程
文件位置:
-C, --directory=DIR        改变到文件此目录
-P, --absolute-names       使用绝对路径来压缩/解压压缩包
-N, New                    比後面接的日期(yyyy/mm/dd)還要新的才會被打包進新建的檔案中!
-X, --exclude-from=FILE    排除出和FILE匹配的文件
--------------------------------------------------------------
例子:
[zhengxh@hoverzg stdshell]$ tar -cvf tt.tar /etc    #打包不压缩
[zhengxh@hoverzg stdshell]$ tar -rvf tt.tar myfile  #向原来包中增加一个文件
[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc      #打包后,以 gzip压缩
[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc     #打包后,以 bzip2压缩
#解压到指定目录
[zhengxh@hoverzg stdshell]$ tar zxvfC data.tar.gz ./mydir/
#查看压缩包里有哪些文件
[zhengxh@hoverzg stdshell]$ tar zvtf data.tar.gz
-rw-r--r-- zhengxh/cvs     115 2007-10-15 15:57:52 data.txt
#把tt目录内的内容压缩到aa目录里
[zhengxh@hoverzg aa]$ tar zcvf tt.tar.gz ../tt/*
tar: 从成员名中删除开头的“../”
../tt/1.cpp
../tt/aa.gz
../tt/bb/
[zhengxh@hoverzg aa]$ tar ztvf tt.tar.gz
-rw-r--r-- zhengxh/cvs     188 2008-06-13 19:06:16 tt/1.cpp
-rw-rw-r-- zhengxh/cvs      23 2007-04-10 23:45:39 tt/aa.gz
drwxr-xr-x zhengxh/cvs       0 2008-01-06 00:52:52 tt/bb/
#只解压压缩包中的一个文件/目录
[zhengxh@hoverzg aa]$ tar -zxvf tt.tar.gz tt/1.cpp(tt/bb)
tt/1.cpp
#使用绝对路径
tar zcvfP data.tar.gz ./mydir/
tar zxvfP data.tar.gz           #这里将自动解压到mydir目录中
#在 /home 中,比 2005/06/01 新的文件才备份
[root@linux ~]# tar -N '2005/06/01' -zcvf home.tar.gz /home
#我要备份 /home, /etc ,但不要 /home/dmtsai
#注意:这里的-X后面的目录或文件必须存在
[root@linux ~]# tar -X /home/dmtsai -zcvf myfile.tar.gz /home/* /etc
#tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z mydir
--------------------------------------------------------------
====================================================
zip, unzip  (.zip)
这个程序在windows下也可以使用
zip [-er]  filename ...
-e  加密,会提示你输入密码,并确认
-r  轮训整个目录
例子:
---------------------------------------------
[zhengxh@hoverzg stdshell]$ zip -re tt.zip mydir
[zhengxh@hoverzg stdshell]$ unzip tt.zip
---------------------------------------------
====================================================
rar [-aexd] -[[h]p] file.rar file...
rar [-exd]  []
<@listfiles...> <path_to_extract/>
rar 主要是针对.rar文件,当然如果是.zip文件也可以。主要的参数有:
[主命令选项]
-a          添加/创建一个.rar备份文件
-e          解压到当前目录
-x          解压到当前目录保持目录结构,e不保持目录结构
-d          从压缩包中删除文件
-l          查看压缩的文件列表
-c          添加压缩包的说明
[辅助选项]
-p          给压缩包加密
-hp         连同数据一起加密
-k          锁定压缩包,之后该包就不能被修改了
例子:
---------------------------------------------
#创建一个rar备份包
[zhengxh@hoverzg stdshell]$ rar a data.rar data.txt
#添加一个压缩包到原来的rar
[zhengxh@hoverzg stdshell]$ rar a data.rar test.c
#从rar包删除一个文件
[zhengxh@hoverzg stdshell]$ rar d data.rar test.c
#查看压缩包中的文件列表
[zhengxh@hoverzg stdshell]$ rar l data.rar
#创建一个压缩包,并把整个目录下的文件一起压缩,并要验证密码
[zhengxh@hoverzg stdshell]$ rar a tt.rar tt/ -p
Enter password (will not be echoed):
Reenter password:
#把数据也一起加密
[zhengxh@hoverzg stdshell]$ rar a tt.rar tt/ -hp
---------------------------------------------
rar请到:http://www.rarsoft.com/download.htm 下载!
====================================================
lha  (.lha)
解压:lha -e FileName.lha
压缩:lha -a FileName.lha FileName
请到:Http://www.infor.kanazawa-it.ac.jp/~ishii/lhaunix/下载!
---------------------------------------------
====================================================
cpio [OPTION...] [destination-directory]
通过重定向的方式把压缩包进行输入/输出。可以解压的文件有.rpm, .tar等
[主选项]
-o :创建:将文件输出到档案或装置上 (output mod)
-i :将数据自档案或装置copy出来到系统当中 (input mode)
-t :查看 cpio 建立的档案或装置的内容
-c :一种较新的 portable format 方式储存
-v :让储存的过程中文件名称可以在屏幕上显示
-B :让预设的 Blocks 可以增加至 5120 bytes ,预设是 512 bytes !
这样的好处是可以让大档案的储存速度加快(请参考 i-nodes 的观念)
-d :自动建立目录!由于 cpio 的内容可能不是在同一个目录内,
如此的话在反备份的过程会有问题! 这个时候加上 -d 的话,
就可以自动的将需要的目录建立起来了!
-u :自动的将较新的档案覆盖较旧的档案!
例子:
---------------------------------------------
#将搜寻到的档案存到磁带机
[root @test /root]# find / -print | cpio -covB > /dev/st0
#将磁带机的数据还原回来
[root @test /root]# cpio -icduv < /dev/st0
#按照rpm包本身的目录结构解压rpm文件
[root @test /root]# rpm2cpio FileName.rpm | cpio -div
---------------------------------------------
补充:
如何不安装但是获取rpm包中的文件
使用工具rpm2cpio和cpio
rpm2cpio xxx.rpm | cpio -vi
rpm2cpio xxx.rpm | cpio -idmv
rpm2cpio xxx.rpm | cpio --extract --make-directories
参数i和extract相同,表示提取文件。v表示指示执行进程
d和make-directory相同,表示根据包中文件原来的路径建立目录
m表示保持文件的更新时间。
====================================================
ar (.deb)
解包:ar p FileName.deb data.tar.gz | tar zxf -
====================================================
用法:dd [选项]...
dd if="input_file" of="output_file" bs="block_size" count="number"
复制文件,并根据以下的选项将数据转换和格式化。
bs=字节         强迫 ibs=<字节> 及 obs=<字节>
cbs=字节        每次转换指定的<字节>
conv=关键字     根据以逗号分隔的关键字表示的方式来转换文件
count=块数目    只复制指定<块数目>的输入数据
ibs=字节        每次读取指定的<字节>
if=文件         读取<文件>内容而非标准输入的数据
obs=字节        每次写入指定的<字节>
of=文件         将数据写入<文件>而不在标准输出显示
seek=块数目     先略过以 obs 为单位的指定<块数目>的输出数据
skip=块数目     先略过以 ibs 为单位的指定<块数目>的输入数据
[以下例子来自鸟哥私房菜(http://linux.vbird.org/)]
例一:將 /etc/passwd  备份到 /tmp/passwd.back 中
[root@linux ~]# dd if=/etc/passwd of=/tmp/passwd.back
3+1 records in
3+1 records out
[root@linux ~]# ll /etc/passwd /tmp/passwd.back
-rw-r--r--  1 root root 1746 Aug 25 14:16 /etc/passwd
-rw-r--r--  1 root root 1746 Aug 29 16:57 /tmp/passwd.back
# 我的 /etc/passwd 文件大小为 1746 bytes,因为我没有设定 bs ,
# 所以预设是 512 bytes 為一個單位,因此,上面那個 3+1 表示有 3 個完整的
# 512 bytes,以及未滿 512 bytes 的另一個 block 的意思啦!
# 事實上,感覺好像是 cp 這個指令啦~
範例二:備份 /dev/hda 的 MBR
[root@linux ~]# dd if=/dev/hda of=/tmp/mbr.back bs=512 count=1
1+0 records in
1+0 records out
# 這就得好好瞭解一下囉~我們知道整顆硬碟的 MBR 為 512 bytes,
# 就是放在硬碟的第一個 sector 啦,因此,我可以利用這個方式來將
# MBR 內的所有資料都紀錄下來,真的很厲害吧! ^_^
範例三:將整個 /dev/hda1 partition 備份下來。
[root@linux ~]# dd if=/dev/hda1 of=/some/path/filename
# 這個指令很厲害啊!將整個 partition 的內容全部備份下來~
# 後面接的 of 必須要不是在 /dev/hda1 的目錄內啊~否則,怎麼讀也讀不完~
# 這個動作是很有效用的,如果改天你必須要完整的將整個 partition 的內容填回去,
# 則可以利用 dd if=/some/file of=/dev/hda1 來將資料寫入到硬碟當中。
# 如果想要整個硬碟備份的話,就類似 Norton 的 ghost 軟體一般,
# 由 disk 到 disk ,嘿嘿~利用 dd 就可以啦~厲害厲害!
你可以說, tar 可以用來備份關鍵資料,而 dd 則可以用來備份整顆 partition 或 整顆 disk ,
很不錯啊~不過,如果要將資料填回到 filesystem 當中,
可能需要考慮到原本的 filesystem 才能成功啊!
====================================================
其他压缩相关操作:
#Linux下怎么实现分卷压缩?
答:用tar命令每卷5M分卷压缩,命令如下:
tar分卷压缩:tar cvzpf - somedir | split -d -b 5M
tar多卷合并:cat x* > mytarfile.tar.gz
#压缩传输文件或目录(FunBSD)
传输到远程:tar czf - www | ssh server "tar zxf -"
压缩到远程:tar czf - www | ssh server "cat > www.tar.gz"
解压到远程:ssh server "tar zxf -" < www.tar.gz
解压到本地:ssh server "cat www.tar.gz" | tar zxf -
---------------------------------------------
先总结这么多,如果有新的体会,再往后加把!
====================================================

linux-应用-压缩与解压小结相关推荐

  1. linux 压缩文件夹格式,Linux下常见文件格式的压缩、解压小结

    Linux下常见文件格式的压缩.解压小结 .tar 解包: tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) ...

  2. 【Linux】压缩与解压zip

    [Linux]压缩与解压zip 1.背景 2.zip压缩 3.unzip解压 1.背景 zip是工作中最常见的一种压缩格式. 本博客介绍在linux下的使用. 2.zip压缩 打印zip的使用说明: ...

  3. Linux 文件目录压缩与解压命令

    Linux 文件目录压缩与解压命令,融合多部Linux经典著作,去除多余部分,保留实用部分. compress压缩: compress是个历史悠久的压缩程序,文件经它压缩后,其名称后面会多出 &quo ...

  4. linux下压缩文件解压文件,linux下 解压和压缩文件 rar文件解压

    Linux 下压缩与解压.zip和.rar及.7z文件 Linux 下压缩与解压.zip和.rar及.7z文件 对于Window下的常见压缩文件.zip和.rar,Linux也有相应的方法来解压它们: ...

  5. linux 压缩7z文件夹,Linux 下压缩与解压.zip和.rar及.7z文件

    Linux 下压缩与解压.zip和.rar及.7z文件对于Window下的常见压缩文件.zip和.rar,Linux也有相应的方法来解压它们: 1)对于.zip linux下提供了zip和unzip程 ...

  6. Linux下压缩、解压命令、压缩比介绍说明

    Linux下压缩.解压命令很多灵活度很大,不像在windows下winrar或360压缩几乎各占版比江山,清一色的.rar .zip格式.Linux下常用的tar tar.gz tar.bz2 .Z等 ...

  7. Linux 各种压缩、解压命令

    tar 只是打包动作,相当于归档处理,不做压缩:解压也一样,只是把归档文件释放出来. tar.gz tgz (tar.gz和tgz只是两种不同的书写方式,后者是一种简化书写,等同处理) 这种格式是Li ...

  8. linux解压命令rar,Linux下压缩与解压命令详解

    本文为大家分享了Linux下压缩与解压缩命令,供大家参考,具体内容如下 [tar命令] 解压:tar -zxvf FileName.tar 压缩:tar -czvf FileName.tar DirN ...

  9. Linux文件压缩与解压

    目录 1.分步压缩 1.1.文件打包 1.2.关于为何需要f参数 1.3.压缩包 2.分步解压 2.1.解压 2.2.解包 3.一步压缩与解压 在Windows上我们常用压缩软件完成文件的压缩,在Li ...

最新文章

  1. Facebook:易于解释的神经元可能会阻碍深度神经网络的学习
  2. ab的压力测试(转)
  3. 阿里巴巴云游戏平台荣获首届高新视频创新应用大赛一等奖
  4. 使用udp协议实现服务器端程序时,用VisualC#实现UDP协议(二)
  5. 红亚科技联手董付国老师开启Python实训教育新篇章
  6. 10年资深面试官直言:80%人面试Java都会止步于此!
  7. c# 程序调试出现“未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。”...
  8. MooseFs的使用与操作
  9. angular 代码高亮_5个对Angular开发者有用的VSCode扩展
  10. Linux发行版简介
  11. java类和对象的生命周期
  12. 2014年你不用担心的10件事
  13. 如此沙雕的代码注释,原来程序员都是段子手
  14. JAVA经典算法40题(供面试所用)
  15. jpg转bmpbmp转jpg
  16. Java高级软件工程师面试考纲总结
  17. 电子产品高温贮存试验的价格-第三方检测机构
  18. 华硕ASUS Prime Z370M-PLUS II黑苹果OpenCore EFI
  19. 【公务员考试】结构化面试时间一般多长?
  20. linux内核教学的全套视频,中科大老师全程讲解Linux内核分析视频教程《附加介绍+总结》共23节课...

热门文章

  1. 计算机睡眠重启后无法识别网络,教您一招解决电脑休眠唤醒后无法使用USB键盘的操作方法...
  2. DIY:利用单片机自制的RGB拖尾流水灯,含电路图、源代码、演示视频、效果图
  3. 身份证、手机号、邮箱、银行卡、企业税号等正则校验
  4. 关闭微信小程序电脑端的位置定位
  5. 压测--部署jp@gc - PerfMon Metrics Collector
  6. vue elementUI 时间控件优化 选择起始时间不能在结束时间之后,结束时间不能在起始时间之前
  7. EFI引导-硬盘(U盘)安装win7 x64
  8. 校园招聘可以报考哪些岗位?
  9. 业务数据分析-大体逻辑
  10. teambition/tower/team@osc/worktile团队协作工具价格比较