#!/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文件进行备份。
该脚本还不完善,如果未能发送到远程主机不能自行判断,下面我将对该问题进行修改
该脚本在经过简单修改后,可以实现数据的本分与主从同步。使用范围比较广泛。