重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛

标题: Linux将本地 RMAN 备份拷贝至 NFS,并保留 3 天的脚本 [打印本页]

作者: mahan    时间: 2026-8-2 14:33
标题: Linux将本地 RMAN 备份拷贝至 NFS,并保留 3 天的脚本
#!/bin/bash
# ==========================================
# 脚本用途: 将本地 RMAN 备份拷贝至 NFS,并保留 3 天
# ==========================================

# 定义目录
LOCAL_BAK_DIR="/u01/rmanbackup/bakset"
REMOTE_NFS_DIR="/rmanbak"
LOG_FILE="/u01/rmanbackup/logs/sync_nfs_$(date +%Y%m%d).log"

echo "========== 备份同步开始: $(date) ==========" >> $LOG_FILE

# 1. 增量拷贝:只把本地今天新生成的备份传过去,忽略 NFS 上已有的文件
# 这样可以避免每天重复拷贝旧文件,节省内网带宽
rsync -av --ignore-existing ${LOCAL_BAK_DIR}/ ${REMOTE_NFS_DIR}/ >> $LOG_FILE 2>&1

if [ $? -eq 0 ]; then
    echo "--> 增量同步完成。" >> $LOG_FILE
else
    echo "--> 增量同步遇到错误,请检查网络或权限!" >> $LOG_FILE
fi

# 2. 远端清理:删除 NFS 挂载点中修改时间在 3 天前(+2 代表 >72 小时)的文件
# 确保只删除文件(-type f),防止误删目录
find ${REMOTE_NFS_DIR} -type f -mtime +2 -exec rm -f {} \; >> $LOG_FILE 2>&1

echo "========== 备份同步与清理结束: $(date) ==========" >> $LOG_FILE
echo "" >> $LOG_FILE

脚本如上。
后台脚本测试完毕后,计划任务如下制定:
crontab -l
# 每天凌晨 02:10 执行本地 RMAN 备份 (原有任务)
10 02 * * * /u01/rmanbackup/rman.sh

# 每天凌晨 05:00 执行 NFS 同步与清理任务 (保留3天)
00 05 * * * /u01/rmanbackup/sync_to_nfs.sh






欢迎光临 重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2