Linux备份与压缩策略
为什么学习这个?
由于现在的应用程序以及文件普遍越来越大,为了节省空间、减少网络传输代价,在备份过程中一般采用压缩技术。
1 打包程序tar
tar命令本身只进行打包不进行压缩,主要功能是将多个文件或目录打包在一个文件里,以便于传输和保存。
为了减少备份文件的大小,节省存储空间,tar命令经常和许多压缩选项配合使用。格式如:
tar 【选项】备份后的文件名.tar 备份的文件或目录
一些基本选项意义如下:
l c或-c:创建新的备份文件
l v或-v:verbose模式,即显示命令执行时的信息
l f或-f:指定压缩的文件格式
l x或-x:对文件进行恢复
l Z或-Z:指定压缩为.Z格式
l z或-z:指定压缩为.z格式
l t或-t:查询包中内容
tar命令选项很多,上面仅为常用选项,各个选项可配合使用
1.1 打包和解包的常规操作
例如对当前目录下的所有文件和目录进行打包,生成IDEinfo.tar备份文件:
对文件进行恢复,将c改为x即可
注:在打包的时候如果使用了绝对路径,恢复时tar会自动将文件或目录恢复到原来的路径下,如果路径不存在就重新创建。为了避免这种情况,打包时建议先进入子目录,然后再执行tar命令。
1.2 查看tar包中的内容
建立软链接
1.3 打包链接文件
tar命令只打包链接文件,不会将源文件打包。
需要使用选项“-h”打包源文件。
1.4 向包中添加新文件
对于打包后的文件,如果要在包中新增文件,只需用“-r”选项,无需重打包全部文件。如:在上例打包文件zhangjiali.tar中新增SAU_zhangjiaji.txt文件。
1.5 生成.tar.gz压缩包
Linux中除了用gzip实现压缩,生成.gz后缀名的压缩包。tar配合“z”选项也可以。
使用“ztf”选项可以查看压缩包中的内容
使用“zxvf”选项可以对后缀名“.tar.gz”的压缩包解压缩
2 压缩程序gzip与gunzip
gzip具有高效压缩率,但只能逐个生成压缩文件,无法将多个文件压缩并打包成一个文件,所以gzip通常和tar配合使用。即先用tar将多个文件打包,然后用gzip进行压缩,通常生成“.tar.gz”或“.tgz”为后缀名的文件。gzip命令格式如下:
gzip 【-cdfhlLnNrtvV19】【-S suffix】【文件名…】
gzip选项:
l -c(stdout):输出到标准输出设备上,原文件内容不变
l -d(decompress):解压缩
l -f(force):对输出文件强制写覆盖并对链接文件进行压缩
l -h(help):显示帮助信息
l -l(list):列出压缩包内容
l -L(license):显示软件许可证
l -n(no-name):不保存或恢复原文件的文件名和时间戳
l -N(name):保存或恢复原文件的文件名和时间戳
l -q(quiet):禁止警告
l -r(recursive):对目录进行递归操作
l -S .suf(suffix .suf):使用自定义的压缩文件后缀名
l -t(test):检测压缩包的完整性
l -v(verbose):verbose模式
l -V(version):显示版本号
l -1(fast):快速压缩
l -9(best):最佳压缩(压缩率最高)
使用gzip命令可以直接对文件进行压缩,但不可以对目录进行压缩。压缩后的文件以原文件名为主文件名,以“.gz”为后缀名,同时系统会自动删除原文件
2.1 常规压缩与解压缩
对一个文件进行压缩
同时对多个文件进行压缩
对一个文件进行解压缩
同时对多个文件进行解压缩
使用选项“-d”,也可以让gzip命令完成对文件的解压缩
2.2 查看.gz压缩包中的内容
以下四项表示:已压缩字节、未压缩字节、压缩率、压缩前文件名
2.3 自定义压缩包后缀名
使用gzip压缩文件后,默认生成的后缀名为“.gz”,但配合“-S”,可自定义压缩文件的后缀名。比如自定义后缀为“.jv”
在解压缩时也必须说明自定义后的后缀名
也可以使用gzip命令解压缩
3 压缩程序zip与unzip
zip格式的文件在windows系统中也被广泛使用,windows中著名的winzip程序就是专门用来处理zip文件的工具。zip命令格式如下:
zip 【-选项】【-t mmddyyyy】【-n 后缀列表】【zip文件】【源文件…】
如果没有指定源文件和zip文件,系统默认对标准输入进行压缩,并从标准输出中到处压缩文件。zip文件如果没有指定后缀名,则默认后缀名为“zip”。zip的选项说明如下:
l -f:仅对变化的文件进行更新
l -u:只有文件被改动或有新文件时才进行升级
l -d:删除zip文件中的条目
l -r:子目录递归
l -l(or 1):将LF转换为CR LF
l -9:最佳压缩(压缩率最高)
l -q:静默模式
l -v:verbose模式,打印版本信息
l -z:给zip压缩文件加注释
l -@:从标准输入读入文件名
l -x:不包括列出的文件
l -i:包括列出的文件
l -j:不包括子目录
l -A:调整为自开展开的exe文件
l -T:检测文件的完整性
l -y:对于链接文件仅保存符号链接
l -e:加密
l -k:用8.3格式转换zip文件中的文件名,并且文件名改为大写
l -m:创建压缩文件后,自动删除源文件
l -n:直接放入压缩包,不进行压缩
3.1 常规压缩操作
指定文件进行压缩
在对目录进行压缩时,如果目录中存在子目录,则zip默认只将目录名放入压缩包,并不进入子目录进行压缩
3.2 连同子目录一并压缩
对当前目录中的所有文件、子目录及子目录下的文件一并进行压缩,需要使用选项“-r”
3.3 对指定目录中的文件进行压缩
对指定目录中的文件进行压缩,忽略子目录,需要使用选项“-j”
3.4 生成兼容压缩包
有时zip压缩文件需要在其他平台上解压缩,为了保持和其他平台的兼容性,最好使用比较通用的8.3命名格式来重新对文件命名,然后在进行压缩。使用选项“-k”。该选项除了将文件名改为8.3格式外,还会将文件名调整为大写。该选项只影响压缩包内的文件名,对源文件名不做更改。
3.5 只打包不压缩
对于JPG、GIF、RMVB、MPEG等格式的媒体文件,由于自身已经采用了一定的压缩技术,如果再用zip进行压缩,效果不大且浪费时间。可使用选项“-n”对该类文件只打包不压缩。文件间用冒号分隔。
3.6 从标准输入读入压缩文件名
选项“-@”允许从标准输入设备读入文件名。如果需要压缩的文件很多,无法在一行列出所有文件名,可以使用该选项,输入完毕按ctrl+d组合键提交文件名
3.7 排除无需压缩的文件
如果某一目录中需要压缩的文件数目占绝大多数,在选择源文件时使用选项“-x”,将个别不需要压缩的文件排除即可。
3.8 对日期进行压缩
如果需要压缩某一日期之后的文件,可以使用选项“-t”对日期进行设定。日期格式mmddyy
例如:对2013年4月27日之后创建的文件进行压缩,可以使用命令:
zip –t 042713 file.zip *
3.9 最佳压缩
选项“-9”表示最佳压缩,即压缩率高。zip的压缩率共分9个等级,其中1级最低,即压缩速率快,但节省空间少;9级最高,压缩速率慢,但可节省较多存储空间。zip默认的压缩等级为6.
3.10 压缩符号链接
对于符号链接文件,zip在压缩前会自动寻找该链接指向的源文件,并对原文件进行压缩,压缩后连接关系不在存在。
如果希望对链接文件自身进行压缩,解压后仍然保持其链接属性,可以使用选项“-y”
3.11 删除源文件
使用选项“-m”,可在生成压缩文件后,自动删除源文件,以进一步节省空间。
4 使用unzip进行解压缩
unzip的命令格式如下:
unzip 【选项】 zip文件
l -Z:以zipinfo格式显示压缩文件内的信息,包括文件数目、已压缩和未压缩字节数、压缩比等
l -l:以简略格式输出压缩文件的基本信息,包括文件名、修改日期时间及未压缩文件的大小等。如果存在注释,也一并显示
l -L:如果压缩文件是从不区分大小写的文件系统中创建,例如MS-DOS操作系统,则将文件名全部改为小写,并添加前最“^”
l -t:通过CRC校验对zip压缩包进行检测
l -x:用于排除压缩包中的特定文件
4.1 常见解压缩操作
unzip file.zip
4.2 排除无需解压缩的文件
unzip file.zip –x file0
4.3 以zipinfo格式查看压缩包的内容
使用“-Z”选项查看压缩包内容
unzip –Z file.zip
4.4 以简略格式查看压缩包内容
使用“-l”选项查看
unzip –l file.zip