转载自http://hi.baidu.com/mywebhome/blog/item/08966aec433384db2e2e2113.html
其实就是我写的。呵呵……
买了块新硬盘,太大了,500G 。个人用怎么都用不完,所以,干脆就划出了一个分区来做备份分区。这是在安装linux之前就划好了的。并没有加入LVM中。安装完毕后,修改/etc /fstab,把这个分区自动挂载到了/mnt/backup上。下面就是这个shell了,名字就叫backup.sh
#!/bin/bash
#############################################################################
####Date : 2009.11.15
####
####Wirter : King
####
####Description
####这是一个简单的,利用tar进行增量备份的shell
####两次备份,第一次备份一些比较小需要备份的目录
####第二次备份usr,lib目录
#######################################################################
##*********************************************************************
##设置本地shell变量####################################################
date_time=`date +%Y%m%d%H%M%S`
date_month=`date +%Y%m`
echo -e "Local current time is \t `date +%Y/%m/%d` `date +%H:%M:%S`"
backup_path=/mnt/backup/bak/
backup_mastername="$backup_path"master.tar.gz
backup_minorname="$backup_path"minor.tar.gz
incremental_path="$backup_path""$date_month"/
incremental_mastername="$incremental_path"master_"$date_time".tar.gz
incremental_minorname="$incremental_path"minor_"$date_time".tar.gz
snapshot="$incremental_path""date_month"
logfile="$backup_path"bak.log
########################################################################
###*******************************************************************
##检查原始完全备份路径与增量备份路径是否存在##########################
##check backup path
##this function check backup path exist or not ,if not then creat the backup pat
h now
chk_back_path()
{
if [ -d $backup_path ]
then
echo "完全备份路径已存在"
else
mkdir -p $backup_path
fi
}
chk_incremental_path()
{
if [ -d $incremental_path ]
then
echo "增量备份路径已存在"
else
mkdir -p $incremental_path
fi
}
####################################################################
##*******************************************************************
##检查测试logfile是否存在#############################################
##check log file
##this function check log file exist or not ,if not then create log file now
chk_log()
{
if [ -f "$backup_path"bak.log ]
then
echo "log文件已创建"
else
touch "$logfile"
echo -e "Begin time \t\t Create file \t\t\t End time" >> $logfil
e
fi
if [ -r "$backup_path"bak.log -a -w "$backup_path"bak.log ]
then
echo "log文件可读写"
else
chmod 644 "$backup_path"bak.log
fi
chattr +a "$backup_path"bak.log
}
####################################################################
##*********************************************************************
##检查测试完全备份是否存在#####################################################
##check fullbackup
##this function check fullbackup file exist or not ,if not then create fullbacku
p now
chk_full()
{
if [ -f "$backup_mastername" ]
then
echo "原始主备份文件已存在"
else
echo -e "`date +%Y/%m/%d_%H:%M:%S` \t `basename $backup_masterna
me` \t\t\t\c" >> $logfile
tar zcPpvf $backup_mastername /bin /dev /home /sbin /srv /var /b
oot /etc /root /selinux /sys
echo "`date +%Y/%m/%d_%H:%M:%S`" >> $logfile
fi
if [ -f "$backup_minorname" ]
then
echo "原始次备份文件已存在"
else
echo -e "`date +%Y/%m/%d_%H:%M:%S` \t `basename $backup_minornam
e` \t\t\t\c" >> $logfile
tar zcPpvf $backup_minorname /usb /lib
echo "`date +%Y/%m/%d_%H:%M:%S`" >> $logfile
fi
}
######################################################################
##********************************************************************
##测试增量备份是否存在#######################################################
##check incremental backup
##this is function check incremental backup file exist or not ,if not then creat
e incremental backup file now
chk_incremental()
{
if [ -f "$incremental_mastername" ]
then
echo "主增量备份文件已存在"
else
echo -e "`date +%Y/%m/%d_%H:%M:%S` \t `basename $incremental_mas
tername` \t\c" >> $logfile
tar -g `dirname $backup_mastername`snapshot -zcPpvf $backup_mast
ername /bin /dev /home /sbin /srv /var /boot /etc /root /selinux /sys
echo "`date +%Y/%m/%d_%H:%M:%S`" >> $logfile
fi
if [ -f "$incremental_minorname" ]
then
echo "次增量备份文件已存在"
else
echo -e "`date +%Y/%m/%d_%H:%M:%S` \t `basename $incremental_min
orname` \t\c" >> $logfile
tar -g `dirname $backup_minorname`snapshot -zcPpvf $backup_minor
name /usb /lib
echo "`date +%Y/%m/%d_%H:%M:%S`" >> $logfile
fi
}
######################################################################
##********************************************************************
#######################################################################
chk_back_path
chk_incremental_path
chk_log
chk_full
chk_incremental
########################################################################
这个shell我自己试用了一下,效果还不错。如果开机时间固定的,可以把它加入到计划任务中去。我的机器备份一次,大概需要25分钟左右。另外,需要注意的就是,在备份的时候,尽量不要开启频繁读取数据的程序,比如向VirtualBox之类的。它会提醒你,备份的数据正在改变。
smr1113 于 2009-12-18 18:33:50发表:
不错。。。
260458726 于 2009-12-18 00:30:08发表:
:0wpoi2 好东西
Neimer 于 2009-12-18 00:08:20发表:
顶楼主
zhaoyuzhong3694 于 2009-12-17 09:38:56发表:
收藏了。
雨天斩璐 于 2009-12-17 09:23:55发表:
学习楼主的作品