hickwu 2011-12-12
gzip, zcat:
[root @test /root ]# gzip [-d#] filename <==压缩与解压缩 [root@test/root]#zcatfilename.gz<==读取压缩档内容 参数说明: -d:解压缩的参数! -#:压缩等级,1最不好,9最好,6是默认值! 范例: [root@test/root]#gzipman.config 会产生 man.config.gz 这个档案[root @test /root]# zcat man.config.gz 会读取出 man.config 的内容 [root @test /root]# gzip -d man.config.gz [root@test/root]#gunzipman.config.gz 解压缩,产生 man.config 这个档案[root @test /root]# gzip -9 man.config 以最大压缩比压缩 testing 这个档案! |
语法:[root@testroot]#bzip2[-dz]filename<==压缩解压缩指令
[root@testroot]#bzcatfilename.bz2<==读取压缩文件内容指令
参数说明:
-d:解压缩的意思!
-z:压缩的意思!
范例:
同样的,我们以刚刚拷贝过来的/root/man.config这个档案为例
[root@testroot]#bzip2–zman.config
[root@testroot]#bzcatman.config.bz2
[root@testroot]#bzip2–dman.config.bz2
[root@testroot]#bunzip2man.config.bz2
刚刚的compress附档名自动建立为.Z,这里的bzip2则是自动的将附档名建置为.bz2啰!所以当我们使用具有压缩功能的bzip2–z时,那么刚刚的man.config就会自动的变成了man.config.bz2这个档名啰!好了,那么如果我想要读取这个档案的内容呢?是否一定要解开?当然不需要啰!可以使用简便的bzcat这个指令来读取内容即可!例如上面的例子中,我们可以使用bzcatman.config.bz2来读取数据而不需要解开!此外,当您要解开一个压缩档时,这个档案的名称为.bz,.bz2,.tbz,.tbz2等等,那么就可以尝试使用bzip2来解看看啦!当然啰,也可以使用bunzip2这个指令来取代bzip2–d啰
语法:[root@test/root]#tar[-zxcvfpP]filename
[root@test/root]#tar-N'yyyy/mm/dd'/path-zcvftarget.tar.gzsource
参数说明:
-z:是否同时具有gzip的属性?
-x:解开一个压缩档案的参数指令!
-t:查看tarfile里面的档案!
-c:建立一个压缩档案的参数指令
-v:压缩的过程中显示档案!
-f:使用档名,请留意,在f之后要立即接档名喔!不要再加参数!
例如使用『tar-zcvfPtfilesfile』就是错误的写法,要写成
『tar-zcvPftfilesfile』才对喔!
-p:使用原档案的原来属性(属性不会依据使用者而变)
-P:可以使用绝对路径
-N:比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的档案中!
--excludeFILE:在压缩的过程中,不要将FILE打包!
范例:
[root@test/root]#tar-cvfdirectory.tardirectory
只将目录整合打包成一个档案[root @test /root]# tar -zcvf directory.tar.gz directory 除了将目录打包外,同时以 gzip 压缩
[root @test /root]# tar -zcvf filename.tar.gz /home/test/* 将 /home/test/ 这个目录下的档案全部打包并压缩成为一个 filename.tar.gz 的档案
[root @test /root]# tar -xvf directory.tar 解 tar 的封包,请注意,由于没有 gzip (.tar 而非 .tar.gz) 的作用,所以只要使用 –xvf 即可!不需要加上 z ,否则会显示有问题!
[root @test /root]# tar -zxvf directory.tar.gz 这个就是有加上 gzip 的压缩的结果!所以需要加上 –z 呦!
[root @test /root]# tar –ztvf directory.tar.gz 这个 t 可以用来查看 tar 里面的档案信息呢!而不需要将他解开!
[root @test /root]# tar -zcvPf home.tar.gz /home
则建立起来的压缩档内档案为绝对路径
请注意,使用这个P的参数时,不要将P加在f后面,因为
f 之后要立即接档名才行喔![root @test /root]# tar -N '2002/06/25' -zcvf home.tar.gz /home 上面是说 在 /home 这个目录中,比 2002/06/25 日还要新的档案才会被打包进入 home.tar.gz 这个档案中!
[root @test /root]# tar -zcvf host.tar.gz / --exclude /mnt --exclude /proc 上面是说,将根目录的所有数据都打包进 host.tar.gz 这个档案中,但是 /mnt 及 /proc 则不打包!
[root @test /root]# tar -cvf - /home | tar -xvf - 上面的意思是『将 /home 打包之后,直接解压缩在 /root 底下!』嘿嘿!不需要再建立一次中间档案!不过,使用上面的语法最好使用『绝对路径』,比较不会有问题!这个方式适合不想要建立中间档案时!
gzip-dtesting.tar.gz
tar-xvftesting.tar
语法:[root@test/root]#cpio-covB>[file|device]<==备份
[root@test/root]#cpio-icduv<[file|device]<==还原
参数说明:
-o:将资料copy输出到档案或装置上
-i:将数据自档案或装置copy出来系统当中
-t:查看cpio建立的档案或装置的内容
-c:一种较新的portableformat方式储存
-v:让储存的过程中文件名称可以在屏幕上显示
-B:让预设的Blocks可以增加至5120bytes,预设是512bytes!
这样的好处是可以让大档案的储存速度加快(请参考i-nodes的观念)
-d:自动建立目录!由于cpio的内容可能不是在同一个目录内,
如此的话在反备份的过程会有问题!这个时候加上-d的话,
就可以自动的将需要的目录建立起来了!
-u:自动的将较新的档案覆盖较旧的档案!
范例:
[root@test/root]#find/-print|cpio-covB>/dev/st0
将搜寻到的档案存到磁带机[root @test /root]# cpio -icduv < /dev/st0 将磁带机的数据还原回来!
[root @test /root]# cpio -icdvt < /dev/st0 > /tmp/content 将磁带机的内容(文件名而已)转存到 /tmp/content
[root @test /root]# find / -type -f | cpio -o > /tmp/root.cpio
[root@test/root]#cpio-i</tmp/root.cpio
上面这个例子可以马上实作看看!先输出到/tmp/root.cpio这个档案,然后再给他还原回来!
这个cpio还蛮神奇的呢!他最适用于备份的时候使用的一个指令了!为什么呢?因为他并不像cp一样,可以直接的将档案给他copy过去,例如cp*/tmp就可以将所在目录的所有档案copy到/tmp底下,在cpio这个指令的用法中,由于cpio无法直接读取档案,而是需要『每一个档案或目录的路径连同文件名一起』才可以被记录下来!因此,cpio最常跟find这个指令一起使用了!这个cpio好像不怎么好用呦!但是,嘿嘿!他可是备份的时候的一项利器呢!因为他可以备份任何的档案,包括/dev底下的任何装置档案!呵呵!所以他可是相当重要的呢!!您说是吧!而由于cpio必需要配合其它的程序,例如find来建立档名,所以,cpio与管线命令及命令重导向的相关性就相当的重要了!上面的例子刚好可以用来复习一下上一章节里面提到的内容!加油啦!