1. 首页 > IT综合教程 > 正文

IT教程FG195-NBU备份系统自动化管理

1. 自动化管理概述

自动化管理可以提高NBU备份系统的效率和可靠性,减少人工操作错误,确保备份任务按时执行。更多学习教程www.fgedu.net.cn

# 查看当前备份作业状态
# bpps -a

# 示例输出
NB Processes:
root 1234 1 0 20:00 ? 00:00:00 /usr/openv/netbackup/bin/bpbrm
root 5678 1 0 20:00 ? 00:00:00 /usr/openv/netbackup/bin/bptm
root 9012 1 0 20:00 ? 00:00:00 /usr/openv/netbackup/bin/nbrb
root 3456 1 0 20:00 ? 00:00:00 /usr/openv/netbackup/bin/nbemm

生产环境风哥建议:自动化管理应覆盖备份生命周期的各个环节,包括备份执行、监控、报告和故障处理。

2. 脚本自动化

通过编写脚本实现备份操作的自动化,提高管理效率。学习交流加群风哥微信: itpux-com

# 创建备份脚本
# vi /usr/local/bin/nbu_backup.sh

#!/bin/bash
# NBU备份自动化脚本

# 日志文件
LOG_FILE=”/var/log/nbu_backup.log”

echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 开始执行备份任务” >> $LOG_FILE

# 执行全备份
echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 执行全备份” >> $LOG_FILE
bpbackup -i -p Full_Backup -s “Full Backup” -w 3600

# 检查备份状态
if [ $? -eq 0 ]; then
echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 全备份成功” >> $LOG_FILE
else
echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 全备份失败” >> $LOG_FILE
# 发送告警
bpemail -s “NBU Backup Failed” -m “Full backup failed” -t admin@fgedu.net.cn
fi

echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 备份任务执行完成” >> $LOG_FILE

# 设置脚本执行权限
# chmod +x /usr/local/bin/nbu_backup.sh

# 测试脚本执行
# /usr/local/bin/nbu_backup.sh

# 查看日志输出
# tail -f /var/log/nbu_backup.log

# 示例输出
[2026-04-01 21:00:00] 开始执行备份任务
[2026-04-01 21:00:00] 执行全备份
[2026-04-01 22:30:00] 全备份成功
[2026-04-01 22:30:00] 备份任务执行完成

3. API集成

通过NBU API实现与其他系统的集成,实现自动化管理。

# 安装NBU API客户端
# yum install -y netbackup-api-client

# 查看API版本
# curl -k -u admin:P@ssw0rd https://nbu-server:1556/netbackup/config/version

# 示例输出
{
“data”: {
“majorVersion”: 8,
“minorVersion”: 3,
“patchVersion”: 0,
“buildNumber”: 1234,
“buildType”: “RELEASE”
}
}

# 使用API创建备份策略
# cat create_policy.json
{
“data”: {
“type”: “policies”,
“id”: “Test_Policy”,
“attributes”: {
“name”: “Test_Policy”,
“policyType”: “STANDARD”,
“active”: true,
“clients”: [“client01”],
“schedules”: [
{
“name”: “Full”,
“scheduleType”: “FULL”,
“frequency”: “WEEKLY”,
“retentionLevel”: “7_Day_Retention”
}
]
}
}
}

# 调用API创建策略
# curl -k -u admin:P@ssw0rd -X POST -H “Content-Type: application/vnd.netbackup+json;version=2.0” -d @create_policy.json https://nbu-server:1556/netbackup/config/policies

# 示例输出
{
“data”: {
“type”: “policies”,
“id”: “Test_Policy”,
“attributes”: {
“name”: “Test_Policy”,
“policyType”: “STANDARD”,
“active”: true,
“clients”: [“client01”],
“schedules”: [
{
“name”: “Full”,
“scheduleType”: “FULL”,
“frequency”: “WEEKLY”,
“retentionLevel”: “7_Day_Retention”
}
]
}
}
}

4. 计划任务自动化

使用计划任务工具(如cron)实现备份任务的自动执行。

# 编辑crontab
# crontab -e

# 添加备份计划
0 21 * * * /usr/local/bin/nbu_backup.sh > /dev/null 2>&1

# 添加备份验证计划
0 10 * * 0 /usr/local/bin/nbu_verify.sh > /dev/null 2>&1

# 添加备份报告计划
0 8 * * * /usr/local/bin/nbu_report.sh > /dev/null 2>&1

# 查看crontab配置
# crontab -l

# 示例输出
0 21 * * * /usr/local/bin/nbu_backup.sh > /dev/null 2>&1
0 10 * * 0 /usr/local/bin/nbu_verify.sh > /dev/null 2>&1
0 8 * * * /usr/local/bin/nbu_report.sh > /dev/null 2>&1

风哥风哥提示:计划任务应根据业务需求合理设置,避免在业务高峰期执行备份操作。

5. 监控自动化

通过自动化监控工具实时监控备份系统状态,及时发现问题。

# 创建监控脚本
# vi /usr/local/bin/nbu_monitor.sh

#!/bin/bash
# NBU监控自动化脚本

LOG_FILE=”/var/log/nbu_monitor.log”

# 检查备份作业状态
echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 检查备份作业状态” >> $LOG_FILE

# 获取失败的备份作业
FAILED_JOBS=$(bpclimagelist -l -hoursago 24 | grep -i “status: 2”)

if [ -n “$FAILED_JOBS” ]; then
echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 发现失败的备份作业” >> $LOG_FILE
echo “$FAILED_JOBS” >> $LOG_FILE
# 发送告警
bpemail -s “NBU Backup Jobs Failed” -m “Some backup jobs failed. Please check the logs.” -t admin@fgedu.net.cn
else
echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 所有备份作业正常” >> $LOG_FILE
fi

# 检查存储单元状态
echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 检查存储单元状态” >> $LOG_FILE

# 获取存储单元状态
STORAGE_STATUS=$(nbdevconfig -liststu | grep -i “status: down”)

if [ -n “$STORAGE_STATUS” ]; then
echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 发现存储单元异常” >> $LOG_FILE
echo “$STORAGE_STATUS” >> $LOG_FILE
# 发送告警
bpemail -s “NBU Storage Unit Down” -m “Some storage units are down. Please check.” -t admin@fgedu.net.cn
else
echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 所有存储单元正常” >> $LOG_FILE
fi

# 设置监控计划
# crontab -e

# 添加监控计划
*/30 * * * * /usr/local/bin/nbu_monitor.sh > /dev/null 2>&1

# 查看监控日志
# tail -f /var/log/nbu_monitor.log

# 示例输出
[2026-04-01 21:30:00] 检查备份作业状态
[2026-04-01 21:30:00] 所有备份作业正常
[2026-04-01 21:30:00] 检查存储单元状态
[2026-04-01 21:30:00] 所有存储单元正常
[2026-04-01 22:00:00] 检查备份作业状态
[2026-04-01 22:00:00] 所有备份作业正常
[2026-04-01 22:00:00] 检查存储单元状态
[2026-04-01 22:00:00] 所有存储单元正常

6. 报告自动化

通过自动化工具生成备份报告,提供备份系统运行状态的详细信息。

# 创建报告脚本
# vi /usr/local/bin/nbu_report.sh

#!/bin/bash
# NBU备份报告自动化脚本

REPORT_DIR=”/var/reports/nbu”
REPORT_FILE=”$REPORT_DIR/nbu_report_$(date +’%Y%m%d’).html”

# 创建报告目录
mkdir -p $REPORT_DIR

# 生成HTML报告
cat > $REPORT_FILE << EOF

NBU Backup Report – $(date +’%Y-%m-%d’)

备份作业统计

EOF

# 获取备份作业信息
bpclimagelist -l -hoursago 24 | while read line; do
if [[ $line == *”Policy Name:”* ]]; then
POLICY=$(echo $line | awk ‘{print $3}’)
elif [[ $line == *”Client Name:”* ]]; then
CLIENT=$(echo $line | awk ‘{print $3}’)
elif [[ $line == *”Backup Type:”* ]]; then
TYPE=$(echo $line | awk ‘{print $3}’)
elif [[ $line == *”Creation Time:”* ]]; then
START_TIME=$(echo $line | awk ‘{print $3, $4}’)
elif [[ $line == *”Expiration Time:”* ]]; then
END_TIME=$(echo $line | awk ‘{print $3, $4}’)
elif [[ $line == *”Status:”* ]]; then
STATUS=$(echo $line | awk ‘{print $2}’)
if [ “$STATUS” -eq 0 ]; then
STATUS=”Success”
else
STATUS=”Failed”
fi
elif [[ $line == *”Size:”* ]]; then
SIZE=$(echo $line | awk ‘{print $2, $3}’)
cat >> $REPORT_FILE << EOF

EOF
fi
done

cat >> $REPORT_FILE << EOF

策略名称 客户端 备份类型 开始时间 结束时间 状态 大小
$POLICY $CLIENT $TYPE $START_TIME $END_TIME $STATUS $SIZE

存储使用情况

EOF

# 获取存储使用情况
nbdevconfig -liststu | while read line; do
if [[ $line == *”Storage Unit Name:”* ]]; then
STORAGE=$(echo $line | awk ‘{print $4}’)
elif [[ $line == *”Type:”* ]]; then
STORAGE_TYPE=$(echo $line | awk ‘{print $2}’)
elif [[ $line == *”Status:”* ]]; then
STORAGE_STATUS=$(echo $line | awk ‘{print $2}’)
cat >> $REPORT_FILE << EOF

EOF
fi
done

cat >> $REPORT_FILE << EOF

存储单元 类型 状态 可用空间
$STORAGE $STORAGE_TYPE $STORAGE_STATUS

EOF

# 发送报告邮件
bpemail -s “NBU Backup Report – $(date +’%Y-%m-%d’)” -m “Please find the attached NBU backup report.” -t admin@fgedu.net.cn -a $REPORT_FILE

echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 备份报告已生成并发送” >> /var/log/nbu_report.log

# 设置报告计划
# crontab -e

# 添加报告计划
0 8 * * * /usr/local/bin/nbu_report.sh > /dev/null 2>&1

# 查看报告文件
# ls -la /var/reports/nbu/

# 示例输出
total 40
-rw-r–r– 1 root root 10240 Apr 1 08:00 nbu_report_20260401.html
-rw-r–r– 1 root root 10240 Apr 2 08:00 nbu_report_20260402.html

7. 灾难恢复自动化

通过自动化工具实现灾难恢复流程的自动执行,提高恢复速度。

# 创建灾难恢复脚本
# vi /usr/local/bin/nbu_disaster_recovery.sh

#!/bin/bash
# NBU灾难恢复自动化脚本

LOG_FILE=”/var/log/nbu_disaster_recovery.log”

echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 开始灾难恢复流程” >> $LOG_FILE

# 检查NBU配置备份
if [ -f “/backup/nbu_config_backup_*.tar.gz” ]; then
echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 找到NBU配置备份” >> $LOG_FILE
else
echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 未找到NBU配置备份,退出” >> $LOG_FILE
exit 1
fi

# 恢复NBU配置
echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 恢复NBU配置” >> $LOG_FILE

# 停止NBU服务
echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 停止NBU服务” >> $LOG_FILE
systemctl stop netbackup

# 恢复配置文件
tar -xzf /backup/nbu_config_backup_*.tar.gz -C /

# 启动NBU服务
echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 启动NBU服务” >> $LOG_FILE
systemctl start netbackup

# 验证NBU服务状态
if systemctl status netbackup | grep -q “active (running)”; then
echo “[$(date +’%Y-%m-%d %H:%M:%S’)] NBU服务启动成功” >> $LOG_FILE
else
echo “[$(date +’%Y-%m-%d %H:%M:%S’)] NBU服务启动失败” >> $LOG_FILE
# 发送告警
bpemail -s “NBU Disaster Recovery Failed” -m “NBU service failed to start after recovery” -t admin@fgedu.net.cn
exit 1
fi

echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 灾难恢复流程完成” >> $LOG_FILE

8. 备份验证自动化

通过自动化工具定期验证备份数据的可恢复性,确保备份数据的有效性。

# 创建备份验证脚本
# vi /usr/local/bin/nbu_verify.sh

#!/bin/bash
# NBU备份验证自动化脚本

LOG_FILE=”/var/log/nbu_verify.log”
VERIFY_DIR=”/test_restore”

# 创建验证目录
mkdir -p $VERIFY_DIR

# 清理验证目录
rm -rf $VERIFY_DIR/*

echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 开始备份验证” >> $LOG_FILE

# 获取最近的全备份
BACKUP_ID=$(bpclimagelist -l -policy Full_Backup | grep -A 5 “Backup Type: FULL” | grep “Backup ID:” | head -1 | awk ‘{print $3}’)

if [ -z “$BACKUP_ID” ]; then
echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 未找到全备份,退出” >> $LOG_FILE
exit 1
fi

echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 验证备份ID: $BACKUP_ID” >> $LOG_FILE

# 执行恢复测试
bprestore -b $BACKUP_ID -D $VERIFY_DIR

# 检查恢复结果
if [ $? -eq 0 ]; then
echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 恢复测试成功” >> $LOG_FILE
# 验证恢复文件数量
FILE_COUNT=$(ls -la $VERIFY_DIR | wc -l)
echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 恢复文件数量: $FILE_COUNT” >> $LOG_FILE
else
echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 恢复测试失败” >> $LOG_FILE
# 发送告警
bpemail -s “NBU Backup Verification Failed” -m “Backup verification failed for backup ID: $BACKUP_ID” -t admin@fgedu.net.cn
fi

echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 备份验证完成” >> $LOG_FILE

9. 故障处理自动化

通过自动化工具快速识别和处理备份系统故障,减少故障影响。

# 创建故障处理脚本
# vi /usr/local/bin/nbu_troubleshooting.sh

#!/bin/bash
# NBU故障处理自动化脚本

LOG_FILE=”/var/log/nbu_troubleshooting.log”

echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 开始故障检测” >> $LOG_FILE

# 检查NBU服务状态
if ! systemctl status netbackup | grep -q “active (running)”; then
echo “[$(date +’%Y-%m-%d %H:%M:%S’)] NBU服务未运行,尝试重启” >> $LOG_FILE
systemctl restart netbackup

# 验证服务状态
if systemctl status netbackup | grep -q “active (running)”; then
echo “[$(date +’%Y-%m-%d %H:%M:%S’)] NBU服务重启成功” >> $LOG_FILE
# 发送通知
bpemail -s “NBU Service Restarted” -m “NBU service was restarted successfully” -t admin@fgedu.net.cn
else
echo “[$(date +’%Y-%m-%d %H:%M:%S’)] NBU服务重启失败” >> $LOG_FILE
# 发送告警
bpemail -s “NBU Service Restart Failed” -m “NBU service failed to restart” -t admin@fgedu.net.cn
fi
fi

# 检查存储单元状态
STORAGE_STATUS=$(nbdevconfig -liststu | grep -i “status: down”)

if [ -n “$STORAGE_STATUS” ]; then
echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 发现存储单元异常,尝试恢复” >> $LOG_FILE
echo “$STORAGE_STATUS” >> $LOG_FILE

# 尝试恢复存储单元
# 这里根据具体存储类型执行不同的恢复操作

# 发送告警
bpemail -s “NBU Storage Unit Issue” -m “Some storage units are down. Please check.” -t admin@fgedu.net.cn
fi

# 检查备份作业队列
QUEUE_STATUS=$(bpexpdate -listall | grep -i “queued”)

if [ -n “$QUEUE_STATUS” ]; then
echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 发现备份作业队列堆积” >> $LOG_FILE
echo “$QUEUE_STATUS” >> $LOG_FILE

# 发送告警
bpemail -s “NBU Backup Queue堆积” -m “Backup jobs are queued. Please check system resources.” -t admin@fgedu.net.cn
fi

echo “[$(date +’%Y-%m-%d %H:%M:%S’)] 故障检测完成” >> $LOG_FILE

10. 自动化最佳实践

实施自动化管理时应遵循以下最佳实践,确保系统的可靠性和安全性。

# 自动化脚本版本控制
# 创建Git仓库
mkdir -p /opt/nbu_scripts
cd /opt/nbu_scripts
git init
git add .
git commit -m “Initial commit”

# 脚本测试
# 创建测试环境
mkdir -p /test/nbu_scripts
cp /usr/local/bin/nbu_backup.sh /test/nbu_scripts/
chmod +x /test/nbu_scripts/nbu_backup.sh

# 执行测试
cd /test/nbu_scripts
./nbu_backup.sh

# 查看测试结果
cat /var/log/nbu_backup.log

# 示例输出
[2026-04-01 23:00:00] 开始执行备份任务
[2026-04-01 23:00:00] 执行全备份
[2026-04-01 23:30:00] 全备份成功
[2026-04-01 23:30:00] 备份任务执行完成

生产环境风哥建议:
1. 对自动化脚本进行版本控制,确保脚本的可追溯性
2. 在测试环境中测试脚本,确保其可靠性
3. 定期更新自动化脚本,适应系统变化
4. 建立脚本执行日志,便于故障排查
5. 对自动化操作设置权限控制,确保安全性

风哥风哥提示:自动化管理是提高NBU备份系统效率的关键,应根据实际业务需求和系统规模制定合理的自动化策略。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息