[ZLG-ARM] Linux压缩打包命令使用方法

[复制链接]
1574|2
 楼主| zcying 发表于 2009-4-8 17:20 | 显示全部楼层 |阅读模式
tar命令<br />[root@linux&nbsp;~]#&nbsp;tar&nbsp;[-cxtzjvfpPN]&nbsp;文件与目录&nbsp;....<br />参数:<br />-c&nbsp;:建立一个压缩文件的参数指令(create&nbsp;的意思);<br />-x&nbsp;:解开一个压缩文件的参数指令!<br />-t&nbsp;:查看&nbsp;tarfile&nbsp;里面的文件!<br />特别注意,在参数的下达中,&nbsp;c/x/t&nbsp;仅能存在一个!不可同时存在!<br />因为不可能同时压缩与解压缩。<br />-z&nbsp;:是否同时具有&nbsp;gzip&nbsp;的属性?亦即是否需要用&nbsp;gzip&nbsp;压缩?<br />-j&nbsp;:是否同时具有&nbsp;bzip2&nbsp;的属性?亦即是否需要用&nbsp;bzip2&nbsp;压缩?<br />-v&nbsp;:压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!<br />-f&nbsp;:使用档名,请留意,在&nbsp;f&nbsp;之后要立即接档名喔!不要再加参数!<br />   例如使用『&nbsp;tar&nbsp;-zcvfP&nbsp;tfile&nbsp;sfile』就是错误的写法,要写成<br />   『&nbsp;tar&nbsp;-zcvPf&nbsp;tfile&nbsp;sfile』才对喔!<br />-p&nbsp;:使用原文件的原来属性(属性不会依据使用者而变)<br />-P&nbsp;:可以使用绝对路径来压缩!<br />-N&nbsp;:比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!<br />--exclude&nbsp;FILE:在压缩的过程中,不要将&nbsp;FILE&nbsp;打包!<br />范例:<br />范例一:将整个&nbsp;/etc&nbsp;目录下的文件全部打包成为&nbsp;/tmp/etc.tar<br />[root@linux&nbsp;~]#&nbsp;tar&nbsp;-cvf&nbsp;/tmp/etc.tar&nbsp;/etc&nbsp;&lt==仅打包,不压缩!<br />[root@linux&nbsp;~]#&nbsp;tar&nbsp;-zcvf&nbsp;/tmp/etc.tar.gz&nbsp;/etc&nbsp;&lt==打包后,以&nbsp;gzip&nbsp;压缩<br />[root@linux&nbsp;~]#&nbsp;tar&nbsp;-jcvf&nbsp;/tmp/etc.tar.bz2&nbsp;/etc&nbsp;&lt==打包后,以&nbsp;bzip2&nbsp;压缩<br />#&nbsp;特别注意,在参数&nbsp;f&nbsp;之后的文件档名是自己取的,我们习惯上都用&nbsp;.tar&nbsp;来作为辨识。<br />#&nbsp;如果加&nbsp;z&nbsp;参数,则以&nbsp;.tar.gz&nbsp;或&nbsp;.tgz&nbsp;来代表&nbsp;gzip&nbsp;压缩过的&nbsp;tar&nbsp;file&nbsp;~<br />#&nbsp;如果加&nbsp;j&nbsp;参数,则以&nbsp;.tar.bz2&nbsp;来作为附档名啊~<br />#&nbsp;上述指令在执行的时候,会显示一个警告讯息:<br />#&nbsp;『tar:&nbsp;Removing&nbsp;leading&nbsp;`/'&nbsp;from&nbsp;member&nbsp;names』那是关於绝对路径的特殊设定。<br />范例二:查阅上述&nbsp;/tmp/etc.tar.gz&nbsp;文件内有哪些文件?<br />[root@linux&nbsp;~]#&nbsp;tar&nbsp;-ztvf&nbsp;/tmp/etc.tar.gz<br />#&nbsp;由於我们使用&nbsp;gzip&nbsp;压缩,所以要查阅该&nbsp;tar&nbsp;file&nbsp;内的文件时,<br />#&nbsp;就得要加上&nbsp;z&nbsp;这个参数了!这很重要的!<br /><br />范例三:将&nbsp;/tmp/etc.tar.gz&nbsp;文件解压缩在&nbsp;/usr/local/src&nbsp;底下<br />[root@linux&nbsp;~]#&nbsp;cd&nbsp;/usr/local/src<br />[root@linux&nbsp;src]#&nbsp;tar&nbsp;-zxvf&nbsp;/tmp/etc.tar.gz<br />#&nbsp;在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说,<br />#&nbsp;我先将工作目录变换到&nbsp;/usr/local/src&nbsp;底下,并且解开&nbsp;/tmp/etc.tar.gz&nbsp;,<br />#&nbsp;则解开的目录会在&nbsp;/usr/local/src/etc&nbsp;呢!另外,如果您进入&nbsp;/usr/local/src/etc<br />#&nbsp;则会发现,该目录下的文件属性与&nbsp;/etc/&nbsp;可能会有所不同喔!<br /><br />范例四:在&nbsp;/tmp&nbsp;底下,我只想要将&nbsp;/tmp/etc.tar.gz&nbsp;内的&nbsp;etc/passwd&nbsp;解开而已<br />[root@linux&nbsp;~]#&nbsp;cd&nbsp;/tmp<br />[root@linux&nbsp;tmp]#&nbsp;tar&nbsp;-zxvf&nbsp;/tmp/etc.tar.gz&nbsp;etc/passwd<br />#&nbsp;我可以透过&nbsp;tar&nbsp;-ztvf&nbsp;来查阅&nbsp;tarfile&nbsp;内的文件名称,如果单只要一个文件,<br />#&nbsp;就可以透过这个方式来下达!注意到!&nbsp;etc.tar.gz&nbsp;内的根目录&nbsp;/&nbsp;是被拿掉了!<br /><br />范例五:将&nbsp;/etc/&nbsp;内的所有文件备份下来,并且保存其权限!<br />[root@linux&nbsp;~]#&nbsp;tar&nbsp;-zxvpf&nbsp;/tmp/etc.tar.gz&nbsp;/etc<br />#&nbsp;这个&nbsp;-p&nbsp;的属性是很重要的,尤其是当您要保留原本文件的属性时!<br /><br />范例六:在&nbsp;/home&nbsp;当中,比&nbsp;2005/06/01&nbsp;新的文件才备份<br />[root@linux&nbsp;~]#&nbsp;tar&nbsp;-N&nbsp;'2005/06/01'&nbsp;-zcvf&nbsp;home.tar.gz&nbsp;/home<br /><br />范例七:我要备份&nbsp;/home,&nbsp;/etc&nbsp;,但不要&nbsp;/home/dmtsai<br />[root@linux&nbsp;~]#&nbsp;tar&nbsp;--exclude&nbsp;/home/dmtsai&nbsp;-zcvf&nbsp;myfile.tar.gz&nbsp;/home/*&nbsp;/etc<br /><br />范例八:将&nbsp;/etc/&nbsp;打包后直接解开在&nbsp;/tmp&nbsp;底下,而不产生文件!<br />[root@linux&nbsp;~]#&nbsp;cd&nbsp;/tmp<br />[root@linux&nbsp;tmp]#&nbsp;tar&nbsp;-cvf&nbsp;-&nbsp;/etc&nbsp;|&nbsp;tar&nbsp;-xvf&nbsp;-<br />#&nbsp;这个动作有点像是&nbsp;cp&nbsp;-r&nbsp;/etc&nbsp;/tmp&nbsp;啦~依旧是有其有用途的!<br />#&nbsp;要注意的地方在於输出档变成&nbsp;-&nbsp;而输入档也变成&nbsp;-&nbsp;,又有一个&nbsp;|&nbsp;存在~<br />#&nbsp;这分别代表&nbsp;standard&nbsp;output,&nbsp;standard&nbsp;input&nbsp;与管线命令啦!<br />#&nbsp;这部分我们会在&nbsp;Bash&nbsp;shell&nbsp;时,再次提到这个指令跟大家再解释啰!<br /><br /><br /><br /><br />gzip,&nbsp;zcat&nbsp;命令<br />[root@linux&nbsp;~]#&nbsp;gzip&nbsp;[-cdt#]&nbsp;档名<br />[root@linux&nbsp;~]#&nbsp;zcat&nbsp;档名.gz<br />参数:<br />-c&nbsp;:将压缩的资料输出到萤幕上,可透过资料流重导向来处理;<br />-d&nbsp;:解压缩的参数;<br />-t&nbsp;:可以用来检验一个压缩档的一致性~看看文件有无错误;<br />-#&nbsp;:压缩等级,-1&nbsp;最快,但是压缩比最差、-9&nbsp;最慢,但是压缩比最好!预设是&nbsp;-6&nbsp;~<br />范例:<br />范例一:将&nbsp;/etc/man.config&nbsp;複制到&nbsp;/tmp&nbsp;,并且以&nbsp;gzip&nbsp;压缩<br />[root@linux&nbsp;~]#&nbsp;cd&nbsp;/tmp<br />[root@linux&nbsp;tmp]#&nbsp;cp&nbsp;/etc/man.config&nbsp;.<br />[root@linux&nbsp;tmp]#&nbsp;gzip&nbsp;man.config<br />#&nbsp;此时&nbsp;man.config&nbsp;会变成&nbsp;man.config.gz&nbsp;!<br />范例二:将范例一的文件内容读出来!<br />[root@linux&nbsp;tmp]#&nbsp;zcat&nbsp;man.config.gz<br />#&nbsp;此时萤幕上会显示&nbsp;man.config.gz&nbsp;解压缩之后的文件内容!!<br /><br />范例三:将范例一的文件解压缩<br />[root@linux&nbsp;tmp]#&nbsp;gzip&nbsp;-d&nbsp;man.config.gz<br /><br />范例四:将范例三解开的&nbsp;man.config&nbsp;用最佳的压缩比压缩,并保留原本的文件<br />[root@linux&nbsp;tmp]#&nbsp;gzip&nbsp;-9&nbsp;-c&nbsp;man.config&nbsp;&gt&nbsp;man.config.gz<br /><br /><br /><br />bzip2,&nbsp;bzcat&nbsp;命令<br />[root@linux&nbsp;~]#&nbsp;bzip2&nbsp;[-cdz]&nbsp;档名<br />[root@linux&nbsp;~]#&nbsp;bzcat&nbsp;档名.bz2<br />参数:<br />-c&nbsp;:将压缩的过程产生的资料输出到萤幕上!<br />-d&nbsp;:解压缩的参数<br />-z&nbsp;:压缩的参数<br />-#&nbsp;:与&nbsp;gzip&nbsp;同样的,都是在计算压缩比的参数,&nbsp;-9&nbsp;最佳,&nbsp;-1&nbsp;最快!<br />范例:<br />范例一:将刚刚的&nbsp;/tmp/man.config&nbsp;以&nbsp;bzip2&nbsp;压缩<br />[root@linux&nbsp;tmp]#&nbsp;bzip2&nbsp;-z&nbsp;man.config<br />#&nbsp;此时&nbsp;man.config&nbsp;会变成&nbsp;man.config.bz2&nbsp;!<br />范例二:将范例一的文件内容读出来!<br />[root@linux&nbsp;tmp]#&nbsp;bzcat&nbsp;man.config.bz2<br />#&nbsp;此时萤幕上会显示&nbsp;man.config.bz2&nbsp;解压缩之后的文件内容!!<br /><br />范例三:将范例一的文件解压缩<br />[root@linux&nbsp;tmp]#&nbsp;bzip2&nbsp;-d&nbsp;man.config.bz2<br /><br />范例四:将范例三解开的&nbsp;man.config&nbsp;用最佳的压缩比压缩,并保留原本的文件<br />[root@linux&nbsp;tmp]#&nbsp;bzip2&nbsp;-9&nbsp;-c&nbsp;man.config&nbsp;&gt&nbsp;man.config.bz2<br /><br /><br /><br />compress&nbsp;命令<br />[root@linux&nbsp;~]#&nbsp;compress&nbsp;[-dcr]&nbsp;文件或目录<br />参数:<br />-d&nbsp;:用来解压缩的参数<br />-r&nbsp;:可以连同目录下的文件也同时给予压缩呢!<br />-c&nbsp;:将压缩资料输出成为&nbsp;standard&nbsp;output&nbsp;(输出到萤幕)<br />范例:<br />范例一:将&nbsp;/etc/man.config&nbsp;複制到&nbsp;/tmp&nbsp;,并加以压缩<br />[root@linux&nbsp;~]#&nbsp;cd&nbsp;/tmp<br />[root@linux&nbsp;tmp]#&nbsp;cp&nbsp;/etc/man.config&nbsp;.<br />[root@linux&nbsp;tmp]#&nbsp;compress&nbsp;man.config<br />[root@linux&nbsp;tmp]#&nbsp;ls&nbsp;-l<br />-rw-r--r--&nbsp;1&nbsp;root&nbsp;root&nbsp;2605&nbsp;Jul&nbsp;27&nbsp;11:43&nbsp;man.config.Z<br />范例二:将刚刚的压缩档解开<br />[root@linux&nbsp;tmp]#&nbsp;compress&nbsp;-d&nbsp;man.config.Z<br /><br />范例三:将&nbsp;man.config&nbsp;压缩成另外一个文件来备份<br />[root@linux&nbsp;tmp]#&nbsp;compress&nbsp;-c&nbsp;man.config&nbsp;&gt&nbsp;man.config.back.Z<br />[root@linux&nbsp;tmp]#&nbsp;ll&nbsp;man.config*<br />-rw-r--r--&nbsp;1&nbsp;root&nbsp;root&nbsp;4506&nbsp;Jul&nbsp;27&nbsp;11:43&nbsp;man.config<br />-rw-r--r--&nbsp;1&nbsp;root&nbsp;root&nbsp;2605&nbsp;Jul&nbsp;27&nbsp;11:46&nbsp;man.config.back.Z<br />#&nbsp;这个&nbsp;-c&nbsp;的参数比较有趣!他会将压缩过程的资料输出到萤幕上,而不是写入成为<br />#&nbsp;file.Z&nbsp;文件。所以,我们可以透过资料流重导向的方法将资料输出成为另一个档名。<br />#&nbsp;关於资料流重导向,我们会在&nbsp;bash&nbsp;shell&nbsp;当中详细谈论的啦!<br /><br /><br /><br />dd&nbsp;命令<br />[root@linux&nbsp;~]#&nbsp;dd&nbsp;if=&quot;input_file&quot;&nbsp;of=&quot;outptu_file&quot;&nbsp;bs=&quot;block_size&quot;&nbsp;\<br />count=&quot;number&quot;<br />参数:<br />if&nbsp;:就是&nbsp;input&nbsp;file&nbsp;啰~也可以是装置喔!<br />of&nbsp;:就是&nbsp;output&nbsp;file&nbsp;喔~也可以是装置;<br />bs&nbsp;:规划的一个&nbsp;block&nbsp;的大小,如果没有设定时,预设是&nbsp;512&nbsp;bytes<br />count:多少个&nbsp;bs&nbsp;的意思。<br />范例:<br />范例一:将&nbsp;/etc/passwd&nbsp;备份到&nbsp;/tmp/passwd.back&nbsp;当中<br />[root@linux&nbsp;~]#&nbsp;dd&nbsp;if=/etc/passwd&nbsp;of=/tmp/passwd.back<br />3+1&nbsp;records&nbsp;in<br />3+1&nbsp;records&nbsp;out<br />[root@linux&nbsp;~]#&nbsp;ll&nbsp;/etc/passwd&nbsp;/tmp/passwd.back<br />-rw-r--r--&nbsp;1&nbsp;root&nbsp;root&nbsp;1746&nbsp;Aug&nbsp;25&nbsp;14:16&nbsp;/etc/passwd<br />-rw-r--r--&nbsp;1&nbsp;root&nbsp;root&nbsp;1746&nbsp;Aug&nbsp;29&nbsp;16:57&nbsp;/tmp/passwd.back<br />#&nbsp;仔细的看一下,我的&nbsp;/etc/passwd&nbsp;文件大小为&nbsp;1746&nbsp;bytes,因为我没有设定&nbsp;bs&nbsp;,<br />#&nbsp;所以预设是&nbsp;512&nbsp;bytes&nbsp;为一个单位,因此,上面那个&nbsp;3+1&nbsp;表示有&nbsp;3&nbsp;个完整的<br />#&nbsp;512&nbsp;bytes,以及未满&nbsp;512&nbsp;bytes&nbsp;的另一个&nbsp;block&nbsp;的意思啦!<br />#&nbsp;事实上,感觉好像是&nbsp;cp&nbsp;这个指令啦~<br /><br />范例二:备份&nbsp;/dev/hda&nbsp;的&nbsp;MBR<br />[root@linux&nbsp;~]#&nbsp;dd&nbsp;if=/dev/hda&nbsp;of=/tmp/mbr.back&nbsp;bs=512&nbsp;count=1<br />1+0&nbsp;records&nbsp;in<br />1+0&nbsp;records&nbsp;out<br />#&nbsp;这就得好好瞭解一下啰~我们知道整颗硬盘的&nbsp;MBR&nbsp;为&nbsp;512&nbsp;bytes,<br />#&nbsp;就是放在硬盘的第一个&nbsp;sector&nbsp;啦,因此,我可以利用这个方式来将<br />#&nbsp;MBR&nbsp;内的所有资料都纪录下来,真的很厉害吧!&nbsp;^_^<br /><br />范例三:将整个&nbsp;/dev/hda1&nbsp;partition&nbsp;备份下来。<br />[root@linux&nbsp;~]#&nbsp;dd&nbsp;if=/dev/hda1&nbsp;of=/some/path/filenaem<br />#&nbsp;这个指令很厉害啊!将整个&nbsp;partition&nbsp;的内容全部备份下来~<br />#&nbsp;后面接的&nbsp;of&nbsp;必须要不是在&nbsp;/dev/hda1&nbsp;的目录内啊~否则,怎么读也读不完~<br />#&nbsp;这个动作是很有效用的,如果改天你必须要完整的将整个&nbsp;partition&nbsp;的内容填回去,<br />#&nbsp;则可以利用&nbsp;dd&nbsp;if=/some/file&nbsp;of=/dev/hda1&nbsp;来将资料写入到硬盘当中。<br />#&nbsp;如果想要整个硬盘备份的话,就类似&nbsp;Norton&nbsp;的&nbsp;ghost&nbsp;软体一般,<br />#&nbsp;由&nbsp;disk&nbsp;到&nbsp;disk&nbsp;,嘿嘿~利用&nbsp;dd&nbsp;就可以啦~厉害厉害!<br /><br /><br /><br />cpio&nbsp;命令<br />[root@linux&nbsp;~]#&nbsp;cpio&nbsp;-covB&nbsp;&gt&nbsp;[file|device]&nbsp;&lt==备份<br />[root@linux&nbsp;~]#&nbsp;cpio&nbsp;-icduv&nbsp;&lt&nbsp;[file|device]&nbsp;&lt==还原<br />参数:<br />-o&nbsp;:将资料&nbsp;copy&nbsp;输出到文件或装置上<br />-i&nbsp;:将资料自文件或装置&nbsp;copy&nbsp;出来系统当中<br />-t&nbsp;:查看&nbsp;cpio&nbsp;建立的文件或装置的内容<br />-c&nbsp;:一种较新的&nbsp;portable&nbsp;format&nbsp;方式储存<br />-v&nbsp;:让储存的过程中文件名称可以在萤幕上显示<br />-B&nbsp;:让预设的&nbsp;Blocks&nbsp;可以增加至&nbsp;5120&nbsp;bytes&nbsp;,预设是&nbsp;512&nbsp;bytes&nbsp;!<br />  &nbsp;这样的好处是可以让大文件的储存速度加快(请参考&nbsp;i-nodes&nbsp;的观念)<br />-d&nbsp;:自动建立目录!由於&nbsp;cpio&nbsp;的内容可能不是在同一个目录内,<br />如此的话在反备份的过程会有问题!&nbsp;这个时候加上&nbsp;-d&nbsp;的话,<br />就可以自动的将需要的目录建立起来了!<br />-u&nbsp;:自动的将较新的文件覆盖较旧的文件!<br />范例:<br />范例一:将所有系统上的资料通通写入磁带机内!<br />[root@linux&nbsp;~]#&nbsp;find&nbsp;/&nbsp;-print&nbsp;|&nbsp;cpio&nbsp;-covB&nbsp;&gt&nbsp;/dev/st0<br />#&nbsp;一般来说,使用&nbsp;SCSI&nbsp;介面的磁带机,代号是&nbsp;/dev/st0&nbsp;喔!<br />范例二:检查磁带机上面有什么文件?<br />[root@linux&nbsp;~]#&nbsp;cpio&nbsp;-icdvt&nbsp;&lt&nbsp;/dev/st0<br />[root@linux&nbsp;~]#&nbsp;cpio&nbsp;-icdvt&nbsp;&lt&nbsp;/dev/st0&nbsp;&gt&nbsp;/tmp/content<br />#&nbsp;第一个动作当中,会将磁带机内的档名列出到萤幕上面,而我们可以透过第二个动作,<br />#&nbsp;将所有的档名通通纪录到&nbsp;/tmp/content&nbsp;文件去!<br /><br />范例三:将磁带上的资料还原回来~<br />[root@linux&nbsp;~]#&nbsp;cpio&nbsp;-icduv&nbsp;&lt&nbsp;/dev/st0<br />#&nbsp;一般来说,使用&nbsp;SCSI&nbsp;介面的磁带机,代号是&nbsp;/dev/st0&nbsp;喔!<br /><br />范例四:将&nbsp;/etc&nbsp;底下的所有『文件』都备份到&nbsp;/root/etc.cpio&nbsp;中!<br />[root@linux&nbsp;~]#&nbsp;find&nbsp;/etc&nbsp;-type&nbsp;f&nbsp;|&nbsp;cpio&nbsp;-o&nbsp;&gt&nbsp;/root/etc.cpio<br />#&nbsp;这样就能够备份啰~您也可以将资料以&nbsp;cpio&nbsp;-i&nbsp;&lt&nbsp;/root/etc.cpio<br />#&nbsp;来将资料捉出来!!!!<br /><br /><br /><br />Linux驱动<br />http://blog.chinaunix.net/u1/37510/showart_677654.html
 楼主| zcying 发表于 2009-4-8 17:21 | 显示全部楼层

这个对我受益匪浅啊!

当时在换系统的时候,那些文件必须压缩存放。否则会出现错误,所以这个资料帮了我大忙啊
 楼主| zcying 发表于 2009-4-8 17:22 | 显示全部楼层

希望能对大家起到帮助作用

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

258

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部