生产环境中为了安全起见,需要对数据库文件以及Web应用上传的附件已经定期的数据备份,为了防止应用服务器或者数据库服务器崩溃时数据的损坏,无法恢复的情况,重要备份文件一般不仅要在本地进行备份,还考虑文件备份在另外一条主机上(异机备份)。
数据库备份文件异机备份(sftp命令跨服务器进行文件下载[get])
前提是本地服务器可以访问目标主机。
脚本内容
#!/bin/sh
echo bakup copy start......................
date=`date +%Y_%m_%d` #获取系统当前日期时间
days=3 #设置删除3天之前的备份文件
bakdir=/backup/bak #备份文件路径,需要提前创建好
backupUser=root
destServer=127.0.0.1 #目标主机IP
for orowner in USER1 USER2 USER3 USER4 USER5
do
ordatabak=$orowner"_"$date.tar.gz #最后保存的Oracle数据库备份文件
cd $bakdir #进入备份目录
echo start cp Time: $date........Orowner:$orowner.................
sftp $backupUser@$destServer << EOF
binary
prompt
get /backup/orabackup/$orowner"_"$date.tar.gz
bye
EOF
find $bakdir -type f -name "*.tar.gz" -mtime +$days -exec rm -rf {} \; #删除3天前的备份(注意:{} \中间有空格)
echo "....................$orowner backup end............................"
done
exit
应用备份文件异机备份(sftp命令跨服务器进行文件上传[put])
脚本内容
#!/bin/sh
orignalDir=/net/appfile #原文件路径
bakdir=/data/backfile #备份路径
days=7 #设置删除7天之前的备份文件
date=`date +%Y_%m_%d` #获取系统当前日期
echo ................ Start to backup $date.........................................................................................
mkdir $bakdir/bak
cd $bakdir/bak
cp -r $orignalDir $bakdir/bak #数据存在appfile目录下,备份到backfile目录下,所以先将数据拷过来
tar -zcvf $bakdir/bak$(date +%Y%m%d).tar.gz $bakdir/bak #将数据所在文件夹bak打包
echo ..................attachfile to 127.0.0.1(目标主机) start at $(date +"%Y-%m-%d %H:%M:%S").....................................
backDir=/backup/attach_bak
packFile=$bakdir/bak$(date +%Y%m%d).tar.gz
destServer=127.0.0.1 #目标主机IP
backupUser=root
sftp -i /root/.ssh/id_rsa -oPort=22 $backupUser@$destServer<<END_SFTP
cd $backDir
put $packFile
exit
END_SFTP
echo .....................attachfile to 127.0.0.1(目标主机IP) end at $(date +"%Y-%m-%d %H:%M:%S")....................................
rm -rf $bakdir/bak/ #删除临时文件内容
find $bakdir -type f -name "*.tar.gz" -mtime +$days -exec rm -rf {} \; #删除7天前的备份(注意:{} \中间有空格)
echo ..................end backup $date.............................................................................................
定时任务执行脚本
创建定时任务请参看博客:Linux为用户新增定时任务