备份系统及系统管理在linux上

Posted by Cofyc, on November 17, 2007, 6:11 pm

昨晚一整夜,都在自己PC上的300G硬盘上奋斗-_-~。重新规划了使用,将硬盘分成了三个区:

 

  • C Partition: 50G, 安装Vista
  • / Partition: 30G, 安装Ubuntu
  • /store Partition: 220G, 专门用于存储的Partition,非系统区

 

其中n个小时,是在给系统备份和恢复文件。得到的教训就是:即使你足够自信,任何情况下也要给自己留一条后路。

在昨晚因为自己的不成熟操作,付出了不少代价。

  • 其中之一,就是一次rm的使用中,多了一个空格,导致误删了不少文件。
  • 其中之二,滥用root权限!许多时候为了方便,但关键时候却会让你付出极大代价。
  • 其中之三,将tgz格式的备份文件放到了vfat格式的移动硬盘上,导致最后无法解压开,使用gzip.org上提供的工具,也是不行(至此不明白为什么,mv到vfat盘上难道使用的是ASCII文本传输?,但为什么使用那个fixgz工具却修复不了了!)。

 

今天,就一直在想,怎样做好一个系统的日常备份,以方便关键时候能有一条后路。

当然,最好的是先将这本Linux System Administration - O'Reilly看完。(我还只看了个开头-_-!)

但就我个人对自己的日常使用的系统上的备份考虑,我做了一下几点:

  • 一是,有一个专门存储的Partition: /store
  • 二是,一个日常备份的脚本
  • 三是,吸取教训及不要滥用root权限。

对一般用户而言,将资料与系统分开,及定时使用备份工具将home文件夹备份就足够了。但,如果你需要一些特殊备份,比如/etc下的配置文件,数据库或者定制一些需要备份的内容。可以考虑写一个完善的脚本,添加到cron中定时执行,将一些非常重要的资料且不是很大的资料进行每日备份。但在放心它去工作的前,一定要经过测试

 

以下是我的做法,注意这只是示例! 实际中,需要作更多的考虑。据情况了解tar, rsync, ssh等工具的用法。

 

利用tar将文件打包及数据库备份:

#!/bin/bash

# Backup Script

# Author: Peter Fu

# Site: http://www.peterfu.net

 

INCLUDE_DIRS="/store/repos $HOME/.mozilla $HOME/.vimrc $HOME/www /etc/apache/* "

EXCLUDE_DIRS="..." # 将不需要备份的文件剔除,比如.mozilla中的cache文件夹

 

# Begin Backup

mv /store/backup/* /store/backup/.temp/

tar -cpfz /store/backup/backup_$(date +%Y%m%d%-%H%M%S).tgz $INCLUDE_DIRS $EXCLUDE_DIRS

mysqldump -uroot -ppassword -all-databases > /store/backup/database_$(date +%Y%m%d%-%H%M%S).sql

rm /store/backup/.temp/*

# End Backup

你需要备份的东西,都可以统一备份到/store partition下的backup目录,甚至你可以将win系统上资料,也在linux下备份了,虽然vista本身就有足够强大且方便的备份机制,但在这里保留一份关键资料的备份,也不是坏事:-)。

如果你局域网或者internet上有一台运行这OpenSSHD服务的机器,可以使用rsync工具备份一份到服务器上,这个工具足够强大及方便,而且可以通过ssh使用public/private keys远程自动备份。注意,这也只是一份示例!

 

 

# Begin Rsync
RSYNC="/usr/bin/rsync"
SSH="/usr/bin/ssh"
KEY=$HOME/island/peter/rsync-key #private key
RUSER="REMOTE_USER" # remote user
RHOST="REMOTE_HOST" # remote host
RPATH="/home/REMOTE_USER/backup/" # remote path
LPATH="/store/backup/" # local path
$RSYNC -az -e "$SSH -i $KEY" $LPATH $RUSER@$RHOST:$RPATH \
--filter='- .temp' \
 --delete

这是我目前想到的备份方案,如果你参考一些网上人们分享的个人经验(google rsync,ssh,backup,linux),及参阅一些专家写的文章: Automate Backups On linux,你会有适合你自己的备份方案的。

 

但要知道,在网上获得一份备份脚本是很容易的,掌握各种命令的使用也很容易。但你要真正做好Linux System Administration,只有不断地学习,比如把这本Linux System Administration - O'Reilly看完(认真看-_-~!)。

by Peter Fu, Sat Nov 17

0 comment - Tags: linux, system, backup