shell写的数据备份,增量备份,完整备份

 

 

公司的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文件进行备份。

 

该脚本还不完善,如果未能发送到远程主机不能自行判断,下面我将对该问题进行修改

 

该脚本在经过简单修改后,可以实现数据的本分与主从同步。使用范围比较广泛。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值