linux数据备份,增量备份,完整备份
时间:2007-10-11 来源:antsnm
公司的linux服务器使用的是一台普通的台式机,缺乏灾难恢复的机制。公司大量数据存放在该服务器上,一旦发生故障后果不堪设想。所以需要对这个机器的重要数据进行有效的备份。经过几天捉摸收集资料,终于编写出了自己的linux脚本,实现了每月的完整备份,和每天的增量备份,打包出来的文件内有当天备份的文件详细列表,以便以后恢复时查找。增量备份存储90内的数据,90以前的将被自动删除。所有备份文件本地保存一份,通过网络自动备份到另外一个主机一份,做到了万无一失。
下面是详细的脚本内容#!/bin/sh
DATE=`date +%F-%H`
host="192.168.16.17"
id="admin"
pw="123456"
ftpdir="days"
baktime=`date --date='90 days ago' +%Y-%m-%d`
if [`date +%d`='1']
then
filename="linux$DATE.tar.gz"
basedir="/mnt/smb/bak/monthly"
zl=""
bakdir="/data/ARCA/work/linux"
else
filename="bak$DATE.tar.gz"
basedir="/mnt/smb/bak/days"
zl="-T /tmp/filelist-2.daily"
bakdir=""
fi
find /data/ARCA/work/linux/ -type f -mtime -1 -print >$bakdir/filelist.daily
cat /tmp/filelist.daily |grep '\.[c.h]$' >/tmp/filelist-2.daily
#echo $baktime
#tar -N '$baktime' zcvf $basedir/$filename $bakdir
tar $zl -czvf ${basedir}/$filename ${bakdir}
#Starting FTP to send file
cd $basedir
ftp -n >"$basedir"/"$filename".log 2>&1 <<EOC
open $host
user $id $pw
binary
cd $ftpdir
mput $filename
bye
EOC
test -e bak$baktime.tar.gz && rm -f bak$baktime* || echo Not fonud this files
将文件存放到/etc/cron。daily目录下,该目录为系统定期运行的目录,该脚本将每天运行一次,每个月的1号进行完整本分,其他日期进行增量备份.有些文件不重要所以只选择.c .h文件进行备份。
该脚本还不完善,如果未能发送到远程主机不能自行判断,下面我将对该问题进行修改
该脚本在经过简单修改后,可以实现数据的本分与主从同步。使用范围比较广泛。