脚本需求:
公司有台oracle数据库,使用oracle自带的rman执行数据库备份,备份文件都存放在本地目录/u01/rmanbk,毕竟备份在本机是不安全的,哪天服务器挂掉,备份文件也会丢失,恢复数据基本不可能了。怎么办呢?备份到异地。公司有另一台windows server 2008的共享服务器,建了一个共享目录,用于存放oracle备份文件。
脚本实现:
大概的思路:通过在oracle数据库系统上面挂载windows 2008的共享目录至本地目录,然后把本地/u01/rmanbk目录下的文件copy至本地目录,每天凌晨5点执行,最后删除30天内未修改过的数据文件,仅保持30天内的备份文件。
脚本文件ccdb_rsync.sh
#!/bin/bash
if [ ! -d /ccdb ]; then
mkdir /ccdb
fiif ! mount | grep ccdb > /dev/null; then
mount -t cifs //192.168.57.39/ccdb_backup /ccdb -o username=ccdb_backup,password="123456",rw
fifor fileName in /u01/rmanbk/*; do
baseName=`basename $fileName`
if [ ! -e /ccdb/$baseName ]; then
cp -a /u01/rmanbk/$baseName /ccdb/$baseName
fi
donefind /ccdb/* ! -mtime -30 -exec rm -rf {} \;
# crontab -l
0 5 * * * bash /root/ccdb_rsync.sh