linux-应用-压缩与解压小结
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-应用-压缩与解压小结相关推荐
- linux 压缩文件夹格式,Linux下常见文件格式的压缩、解压小结
Linux下常见文件格式的压缩.解压小结 .tar 解包: tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) ...
- 【Linux】压缩与解压zip
[Linux]压缩与解压zip 1.背景 2.zip压缩 3.unzip解压 1.背景 zip是工作中最常见的一种压缩格式. 本博客介绍在linux下的使用. 2.zip压缩 打印zip的使用说明: ...
- Linux 文件目录压缩与解压命令
Linux 文件目录压缩与解压命令,融合多部Linux经典著作,去除多余部分,保留实用部分. compress压缩: compress是个历史悠久的压缩程序,文件经它压缩后,其名称后面会多出 &quo ...
- linux下压缩文件解压文件,linux下 解压和压缩文件 rar文件解压
Linux 下压缩与解压.zip和.rar及.7z文件 Linux 下压缩与解压.zip和.rar及.7z文件 对于Window下的常见压缩文件.zip和.rar,Linux也有相应的方法来解压它们: ...
- linux 压缩7z文件夹,Linux 下压缩与解压.zip和.rar及.7z文件
Linux 下压缩与解压.zip和.rar及.7z文件对于Window下的常见压缩文件.zip和.rar,Linux也有相应的方法来解压它们: 1)对于.zip linux下提供了zip和unzip程 ...
- Linux下压缩、解压命令、压缩比介绍说明
Linux下压缩.解压命令很多灵活度很大,不像在windows下winrar或360压缩几乎各占版比江山,清一色的.rar .zip格式.Linux下常用的tar tar.gz tar.bz2 .Z等 ...
- Linux 各种压缩、解压命令
tar 只是打包动作,相当于归档处理,不做压缩:解压也一样,只是把归档文件释放出来. tar.gz tgz (tar.gz和tgz只是两种不同的书写方式,后者是一种简化书写,等同处理) 这种格式是Li ...
- linux解压命令rar,Linux下压缩与解压命令详解
本文为大家分享了Linux下压缩与解压缩命令,供大家参考,具体内容如下 [tar命令] 解压:tar -zxvf FileName.tar 压缩:tar -czvf FileName.tar DirN ...
- Linux文件压缩与解压
目录 1.分步压缩 1.1.文件打包 1.2.关于为何需要f参数 1.3.压缩包 2.分步解压 2.1.解压 2.2.解包 3.一步压缩与解压 在Windows上我们常用压缩软件完成文件的压缩,在Li ...
最新文章
- Facebook:易于解释的神经元可能会阻碍深度神经网络的学习
- ab的压力测试(转)
- 阿里巴巴云游戏平台荣获首届高新视频创新应用大赛一等奖
- 使用udp协议实现服务器端程序时,用VisualC#实现UDP协议(二)
- 红亚科技联手董付国老师开启Python实训教育新篇章
- 10年资深面试官直言:80%人面试Java都会止步于此!
- c# 程序调试出现“未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。”...
- MooseFs的使用与操作
- angular 代码高亮_5个对Angular开发者有用的VSCode扩展
- Linux发行版简介
- java类和对象的生命周期
- 2014年你不用担心的10件事
- 如此沙雕的代码注释,原来程序员都是段子手
- JAVA经典算法40题(供面试所用)
- jpg转bmpbmp转jpg
- Java高级软件工程师面试考纲总结
- 电子产品高温贮存试验的价格-第三方检测机构
- 华硕ASUS Prime Z370M-PLUS II黑苹果OpenCore EFI
- 【公务员考试】结构化面试时间一般多长?
- linux内核教学的全套视频,中科大老师全程讲解Linux内核分析视频教程《附加介绍+总结》共23节课...
热门文章
- 计算机睡眠重启后无法识别网络,教您一招解决电脑休眠唤醒后无法使用USB键盘的操作方法...
- DIY:利用单片机自制的RGB拖尾流水灯,含电路图、源代码、演示视频、效果图
- 身份证、手机号、邮箱、银行卡、企业税号等正则校验
- 关闭微信小程序电脑端的位置定位
- 压测--部署jp@gc - PerfMon Metrics Collector
- vue elementUI 时间控件优化 选择起始时间不能在结束时间之后,结束时间不能在起始时间之前
- EFI引导-硬盘(U盘)安装win7 x64
- 校园招聘可以报考哪些岗位?
- 业务数据分析-大体逻辑
- teambition/tower/team@osc/worktile团队协作工具价格比较