鸟哥的linux私房菜_文件与文件系统

鸟哥的linux私房菜_文件与文件系统

9. 文件与文件系统的压缩与打包


9.1压缩文件的用途与技术


9.2linux常见的压缩命令


9.2.1 compress


语法:
压缩:
>compress [-rcv] 文件或者目录
-r:可以连同目录下的文件同时压缩
-c:将压缩数据输出成为 standard output (输出到屏幕)
-v:可以显示出压缩后的文件信息以及压缩过程中的文件变化


解压:
>uncompress 文件名.Z


9.2.2 gzip、zcat


压缩后格式*.gz
语法:


[[email protected] ~]$  gzip [-cdtv#]  檔名
[[email protected] ~]$  zcat  檔名.gz
选项与参数:
-c :将压缩的数据输出到屏幕上,可透过数据流重导向来处理;
-d :解压缩的参数;
-t :可以用来检验一个压缩文件的一致性~看看文件有无错误;
-v :可以显示出原文件/压缩文件案的压缩比等信息;
-# :# 为数字的意思,代表压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!预设是 -6


范例


范例一:找出 /etc 底下 (不含子目录) 容量最大的文件,并将它复制到 /tmp ,然后以 gzip 压缩
[[email protected] ~]$  ls -ldSr /etc/* # 忘记选项意义?请自行 man 啰!
.....(前面省略).....
-rw-r--r--. 1 root root 25213 Jun 10 2014 /etc/dnsmasq.conf
-rw-r--r--. 1 root root 69768 May 4 17:55 /etc/ld.so.cache
-rw-r--r--. 1 root root 670293 Jun 7 2013 /etc/services
[[email protected] ~]$  cd /tmp
[[email protected] tmp]$  cp /etc/services .
[[email protected] tmp]$  gzip -v services
services: 79.7% -- replaced with services.gz


范例三:将范例一的文件解压缩
[[email protected] tmp]$  gzip -d services.gz
# 鸟哥不要使用 gunzip 这个指令,不好背!使用 gzip -d 来进行解压缩!
# 与 gzip 相反, gzip -d 会将原本的 .gz 删除,回复到原本的 services 文件。


zcat 可以用来读取纯文本被压缩后的压缩文件;


9.2.3 bzip2、 bzcat


压缩后格式 .bz2
用法与gzip几乎相同


>bzip2 [-cdkzv#] 文件名
-c:将压缩数据输出到屏幕上,
-d:解压缩参数 。可以使用bunzip2 取代 bzip2 -d;
-z:压缩参数
-k:保留源文件,而不会删除原文件
-#:与gzip相同


bzcat 查看压缩后侧文本文件


9.2.4 xz, xzcat/xzmore/xzless/xzgrep


语法
用法也跟 gzip/bzip2 几乎一模一样


[[email protected] ~]$  xz [-dtlkc#]  檔名
[[email protected] ~]$  xcat  檔名 .xz
选项与参数:
-d :就是解压缩啊!
-t :测试压缩文件的完整性,看有没有错误
-l :列出压缩文件的相关信息
-k :保留原本的文件不删除~
-c :同样的,就是将数据由屏幕上输出的意思!
-# :同样的,也有较佳的压缩比的意思!


9.3打包命令


是什么:
虽然 gzip bzip2也能过对目录进行压缩,不过这两个命令对目录的压缩是将目录的所有文件分别进行压缩操作。将多个文件或目录包成一个大文件的命令功能,我们可以称为打包;


9.3.1 tar


语法:tar 的参数非常多,讲个常用的


>tar [-j | z] [cv] [-f 新建的文件名] filename .....   #打包与压缩
>tar [-j |z] [tv] [-f 新建的文件名]  #产看原文件 
>tar [-j |z ] [xv] [-f 新建的文件名] [-C 目录]


-c:新建打包文件,可搭配-v来查看过程中被打包的文件名(filename)
-t:查看打包文件的内容含有哪些文件名,重点在查看文件名
-x:解打包 解压缩功能,可以搭配 -C 在特定的目录中解开
-t -c -x 不可以同时出现在一行命令中


-j:通过bzip2 的方式压缩或解压, 此时文件格式最好为.tar.bz2;
-z:通过 gzip的方式压缩或者解压,此时文件格式最好为.tar.gz;


-v:在压缩或解压过程中,将正在处理的文件显示出来


-f filename: -f后面接要处理的文件名, 建议 -f单独写一个参数
-C 目录:用在解压时,在特定的目录中解压
-p (小写):保留绝对路径,即允许备份数据中含有根目录存在
-P(大写):保留备份文件的权限与属性


9.4完整备份工具:dump


9.4.1 dump 


9.4.2 restore


9.5光盘写入工具


9.5.1 mkisofs:新建镜像文件


9.5.2 cdrecord :光盘刻录工具


9.6其他常见的压缩工具与备份


9.6.1 dd


语法


[[email protected] ~]#  dd if="input_file" of="output_file" bs="block_size" count="number"
选项与参数:
if :就是 input file 啰~也可以是装置喔!
of :就是 output file 喔~也可以是装置;
bs :规划的一个 block 的大小,若未指定则预设是 512 bytes(一个 sector 的大小)
count:多少个 bs 的意思。


范例


范例一:将 /etc/passwd 备份到 /tmp/passwd.back 当中
[[email protected] ~]#  dd if=/etc/passwd of=/tmp/passwd.back
4+1 records in
4+1 records out
2092 bytes (2.1 kB) copied, 0.000111657 s, 18.7 MB/s
[[email protected] ~]#  ll /etc/passwd /tmp/passwd.back
-rw-r--r--. 1 root root 2092 Jun 17 00:20 /etc/passwd
-rw-r--r--. 1 root root 2092 Jul 2 23:27 /tmp/passwd.back
# 仔细的看一下,我的 /etc/passwd 文件大小为 2092 bytes,因为我没有设定 bs ,
# 所以默认是 512 bytes 为一个单位,因此,上面那个 4+1 表示有 4 个完整的 512 bytes,
# 以及未满 512 bytes 的另一个 block 的意思啦!事实上,感觉好像是 cp 这个指令啦~


9.6.2 cpio


是什么


cpio 可以将系统的数据完整的备份到磁带机上头去