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实现与其他系统的集成,实现自动化管理。
# 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”
}
}
# 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 -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’)
备份作业统计
| 策略名称 | 客户端 | 备份类型 | 开始时间 | 结束时间 | 状态 | 大小 |
|---|---|---|---|---|---|---|
| $POLICY | $CLIENT | $TYPE | $START_TIME | $END_TIME | $STATUS | $SIZE |
存储使用情况
| 存储单元 | 类型 | 状态 | 可用空间 |
|---|---|---|---|
| $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. 对自动化操作设置权限控制,确保安全性
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
