Linux下文件的压缩和备份
文/ heiyeluren
文件的备份和压缩是管理员遇到的首要问题,我刚学Linux,总结一下书上和网络上的方法。(本文章基于Redhat9)
一、使用tar命令进行备份
tar命令本来的作用是能够把很多文件放到一个小文件中进行归档,但是同时又能够对文件进行压缩。所以,一般情况下我们都采用tar进行文
件整理和压缩。
/* 把/root整个目录进行压缩备份 */
# tar cvzf /tmp/root_backup_1215.tar.gz /root
那么我们就能够把 /tmp/root_backup_1215.tar.gz进行存储,比如保存到磁带机上等。
说明: 压缩的tar档案通常的扩展名是 tar.gz、tgz、或者tar.bz2。前两个扩展名一般是使用gzip命令进行压缩的tar档案,后一个扩展名是
基于bzip2的压缩,因为压缩算法的原因,后一个压缩更强。
同时,我们也很容易把已经打包压缩的文件进行恢复:
/* 从备份文件中进行还原 */
# tar tkvzf root_backup_1215.tar.gz
说明: tar命令是路经相关的。如果将文件用绝对路经保存到一个目录中(即开头为斜杆,如/home/mj),则可以从计算机上的任何位置将文
件恢复到这个目录。如果使用相对路经(没有开头的斜杆,如/home/mj),则文件不一定恢复到原址,而是取决于当前工作目录。
/* 把备份文件释放出来 */
# tar zxvf root_backup_1215.tar.gz
/* 把/root目录备份并且压缩 */
# tar czvf root_backup_1215.tar.gz /root
tar命令选项
---------------------------------------------------
选项 功能
---------------------------------------------------
c 生成档案
d 比较档案与当前目录中的文件
f 使用后面的档案文件名
j 压缩成bzip2格式的
k 不覆盖当前文件
r 见文件添加到档案末尾
t 列出当前档案中的文件
v 冗长方式,列出进出档案的所有文件
z Zip,按照普通gzip格式压缩文件
x 从备份文件中还原文件
---------------------------------------------------
以上只是部分常用选项,更详细请参考手册
二、使用cpio备份存档
cpio (copy in/out) 命令可以建立存档,跟tar不同之处在于,它能够处理标准的输入输出。顾名思义,就是复制,输入,输出的意思。
如果要备份root的文件,使用下列命令:
# find /root | cpio -o > /tmp/root_backup_1215.cpio
cpio能够使用通配符将一组文件设置成标准输入。比如,下面见所有的.tif文件建立档案:
# find *.tif | cpio -o > /tmp/back.cpio
记住,find命令很灵活,下列命令把系统中所有的.tif文件进行归档:
# find / -name '*.tif' | cpio -o > /tmp/back_tif.cpio
同时,也很容易从cpio档案中恢复文件。下列命令恢复back_tif.cpio中的文件:
# cpio -i < back_tif.cpio
和tar命令一样,cpio命令恢复从目录保存的文件时,取决于是相对路经还是绝对路经。
cpio命令还有一个优点是可以直接将文件发送给外部源,例如,下列命令恢复/root主目录中的文件,并把文件发送到SCSI磁带机:
# find /root | cpio -o -> /dev/st0
# cpio -i < /dev/st0
CPIO的命令选项
---------------------------------------------------
选项 功能
---------------------------------------------------
-A 添加到档案末尾,与-F密切相关
-F 指定档案文件名,可以换成反向箭头>
-i 从档案文件或设备读取
-o 复制到档案文件或者设备
-u 替换所有文件,使其更新
-v 冗长方式
---------------------------------------------------
三、磁带转存和恢复
dump与restore命令使递增备份与差异备份很容易实现。dump可以取得目录内容,restore可以交互式将备份文件返回原址。
尽管这些命令最常用于磁带机,但是也同样适合其他介质,比如可以备份到软盘。
1、用dump存档
dump有三个基本选项,可以设置一系列命令,从主目录备份,差异备份。例如,我们要把/home/mao目录备份到/devnst0磁带机上:
# dump 0f /dev/nst0 /home/mao
# dump 1f /dev/nst0 /home/mao
# dump 2f /dev/nst0 /home/mao
# dump 3f /dev/nst0 /home/mao
# dump 4f /dev/nst0 /home/mao
# dump 5f /dev/nst0 /home/mao
第一个命令 # dump 0f /dev/nst0 /home/mao 是建立/home/mao目录的完全备份,后面的命令一次运行,只对商议次备份之后改变的文件建立
差异备份。
提示: 为了加速备份,可以使用磁带机允许的最大块长。例如,命令# dump 0f /dev/nst0 /home/mao -b 2048使用的块长为2048字节。可以
使用更大的块长来减少备份时间,但是也要在restore命令的时候使用想适应的块来还原。
如果想要备份整个系统,可以使用u选项,例如:
# dump 0uf /dev/nst0 /
dump的命令选项
------------------------------------------------------------
选项 功能
------------------------------------------------------------
0 ~ 9 转储级,0 = 完全备份,差异备份是递增(1,2,3..),
而增量备份存储号码是递减(8,7,6..)
A 建档备份目录表
f 将备份写入文件或设备
j level 压缩写入,要只定压缩级,如2或4
T date 指定日期,而不用/etc/dumpddates中显示的日期
u 备份成功后更新/etc/dumpdates
------------------------------------------------------------
2、用restore进行还原
可以使用restore命令浏览dump命令备份的文件清单。例如:
# restore -tf /dev/fd0
也可以用恢复搜索的方式搜索当前备份。
restore命令选项
--------------------------------------------------------
选项 功能
--------------------------------------------------------
-C 比较备份与当前文件
-f 指定文件
-i 允许备份的交互恢复,恢复方式中有几个命令
-r 在全新格式化分区重建数据
-t 列出备份中的文件名
--------------------------------------------------------
结束:
终于结束了,虽然很多问题没说清楚,另外也没有说使用CD刻录备份的东西,自己去研究了。
打字好累呀。。。 :-)
另外,部分命令参考和参考资料:
http://www.jlu.edu.cn/~wyr/newcourse/linux/243.htm
http://www.ourlinux.net/index.php?index=Article_list&type=type_2&type_2_id=4&type_1_id=5
http://www.douzhe.com/docs/RH9/rhl-gsg-zh_CN-9/s1-managing-compressing-archiving.html
WriteTime: 2004-12-14 下午 16:40