1. 恢复概述
NBU恢复是将备份数据还原到原始位置或新位置的过程,支持文件级、目录级、完整恢复等多种方式。更多学习教程www.fgedu.net.cn
# /usr/openv/netbackup/bin/bpimagelist -client fgedu-app01 -U
Backup ID: fgedu-app01_1712120400
Client: fgedu-app01
Policy: fgedu_prod_backup
Schedule: Full_Backup
Backup Time: 04/03/2026 22:00:00
Expiration: 04/10/2026 22:00:00
Kilobytes: 1048576
Files: 12345
Retention Level: 1 week
# 查看备份内容列表
# /usr/openv/netbackup/bin/bplist -C fgedu-app01 -t 0 -R -l /
drwxr-xr-x root root 0 Apr 03 22:00 /data/
drwxr-xr-x root root 0 Apr 03 22:00 /data/app/
-rw-r–r– root root 1048576 Apr 03 22:00 /data/app/config.xml
-rw-r–r– root root 2097152 Apr 03 22:00 /data/app/data.db
-rw-r–r– root root 5242880 Apr 03 22:00 /data/app/logs/app.log
# 查看备份作业历史
# /usr/openv/netbackup/bin/bpdbjobs -report -most_columns | grep fgedu-app01
12345,Backup,Done,0,fgedu_prod_backup,Full_Backup,fgedu-app01,12345,04/03/2026 22:00:00,04/03/2026 23:30:00
12346,Backup,Done,0,fgedu_prod_backup,Incr_Backup,fgedu-app01,12346,04/04/2026 22:00:00,04/04/2026 22:30:00
# 查看介质信息
# /usr/openv/netbackup/bin/admincmd/bpmedialist -U
Media ID: ABC123
Media Type: Disk
Media Server: fgedu-nbu-msdp
Last Written: 04/03/2026 22:00:00
Kilobytes: 104857600
2. 文件级恢复
文件级恢复是最常用的恢复方式,恢复单个或多个文件。学习交流加群风哥微信: itpux-com
# /usr/openv/netbackup/bin/bprestore -C fgedu-app01 -D fgedu-app01 \
-s 04/03/2026 00:00:00 -e 04/03/2026 23:59:59 \
-L /tmp/restore.log \
/data/app/config.xml
Restore completed successfully.
# 查看恢复日志
# cat /tmp/restore.log
04/03/2026 10:00:00 – begin restore
04/03/2026 10:00:05 – restore of /data/app/config.xml completed
04/03/2026 10:00:05 – end restore
# 恢复多个文件
# /usr/openv/netbackup/bin/bprestore -C fgedu-app01 -D fgedu-app01 \
-s 04/03/2026 00:00:00 -e 04/03/2026 23:59:59 \
-L /tmp/restore.log \
/data/app/config.xml \
/data/app/data.db
# 使用文件列表恢复
# cat > /tmp/restore_list.txt << 'EOF'
/data/app/config.xml
/data/app/data.db
/data/app/settings.json
EOF
# /usr/openv/netbackup/bin/bprestore -C fgedu-app01 -D fgedu-app01 \
-s 04/03/2026 00:00:00 -e 04/03/2026 23:59:59 \
-L /tmp/restore.log \
-f /tmp/restore_list.txt
# 恢复到不同位置
# /usr/openv/netbackup/bin/bprestore -C fgedu-app01 -D fgedu-app01 \
-s 04/03/2026 00:00:00 -e 04/03/2026 23:59:59 \
-R /tmp/restore_relocate.txt \
/data/app/config.xml
# cat /tmp/restore_relocate.txt
change /data/app/config.xml to /tmp/restored/config.xml
# 强制覆盖现有文件
# /usr/openv/netbackup/bin/bprestore -C fgedu-app01 -D fgedu-app01 \
-s 04/03/2026 00:00:00 -e 04/03/2026 23:59:59 \
-overwrite \
/data/app/config.xml
3. 目录级恢复
目录级恢复恢复整个目录及其内容。学习交流加群风哥QQ113257174
# /usr/openv/netbackup/bin/bprestore -C fgedu-app01 -D fgedu-app01 \
-s 04/03/2026 00:00:00 -e 04/03/2026 23:59:59 \
-L /tmp/restore.log \
/data/app/
Restore completed successfully.
# 恢复目录到新位置
# /usr/openv/netbackup/bin/bprestore -C fgedu-app01 -D fgedu-app01 \
-s 04/03/2026 00:00:00 -e 04/03/2026 23:59:59 \
-R /tmp/relocate.txt \
/data/app/
# cat /tmp/relocate.txt
change /data/app/ to /data/app_restored/
# 恢复目录并保留权限
# /usr/openv/netbackup/bin/bprestore -C fgedu-app01 -D fgedu-app01 \
-s 04/03/2026 00:00:00 -e 04/03/2026 23:59:59 \
-p \
/data/app/
# 恢复目录并保留时间戳
# /usr/openv/netbackup/bin/bprestore -C fgedu-app01 -D fgedu-app01 \
-s 04/03/2026 00:00:00 -e 04/03/2026 23:59:59 \
-T \
/data/app/
# 恢复时排除某些文件
# cat > /tmp/exclude_list.txt << 'EOF'
/data/app/logs/*.log
/data/app/tmp/
EOF
# /usr/openv/netbackup/bin/bprestore -C fgedu-app01 -D fgedu-app01 \
-s 04/03/2026 00:00:00 -e 04/03/2026 23:59:59 \
-exclude_list /tmp/exclude_list.txt \
/data/app/
# 查看恢复进度
# /usr/openv/netbackup/bin/bpdbjobs -jobid 12345 -report
Job ID: 12345
Job Type: Restore
State: Done
Status: 0
Client: fgedu-app01
Policy: fgedu_prod_backup
Start Time: 04/03/2026 10:00:00
End Time: 04/03/2026 10:30:00
Files: 12345
Kilobytes: 1048576
4. 完整恢复
完整恢复恢复整个文件系统或所有备份内容。更多学习教程公众号风哥教程itpux_com
# /usr/openv/netbackup/bin/bprestore -C fgedu-app01 -D fgedu-app01 \
-s 04/03/2026 00:00:00 -e 04/03/2026 23:59:59 \
-L /tmp/full_restore.log \
/
# 恢复特定文件系统
# /usr/openv/netbackup/bin/bprestore -C fgedu-app01 -D fgedu-app01 \
-s 04/03/2026 00:00:00 -e 04/03/2026 23:59:59 \
-L /tmp/fs_restore.log \
/data/
# 灾难恢复流程
# 1. 安装操作系统和NBU客户端
# 2. 配置NBU客户端连接主服务器
# /usr/openv/netbackup/bin/bpclntcmd -pn
# 3. 恢复系统配置
# /usr/openv/netbackup/bin/bprestore -C fgedu-app01 -D fgedu-app01 \
-s 04/03/2026 00:00:00 \
/etc/
# 4. 恢复应用数据
# /usr/openv/netbackup/bin/bprestore -C fgedu-app01 -D fgedu-app01 \
-s 04/03/2026 00:00:00 \
/data/app/
# 5. 恢复应用配置
# /usr/openv/netbackup/bin/bprestore -C fgedu-app01 -D fgedu-app01 \
-s 04/03/2026 00:00:00 \
/opt/app/config/
# 完整恢复脚本
# cat > /opt/scripts/full_restore.sh << 'EOF'
#!/bin/bash
CLIENT=$1
BACKUP_DATE=$2
if [ -z "$CLIENT" ] || [ -z "$BACKUP_DATE" ]; then
echo "Usage: $0
echo “Example: $0 fgedu-app01 04/03/2026”
exit 1
fi
echo “开始完整恢复: $CLIENT”
echo “备份日期: $BACKUP_DATE”
echo “==========================================”
echo “1. 恢复系统配置…”
/usr/openv/netbackup/bin/bprestore -C $CLIENT -D $CLIENT \
-s “${BACKUP_DATE} 00:00:00” -e “${BACKUP_DATE} 23:59:59” \
/etc/
echo “2. 恢复应用数据…”
/usr/openv/netbackup/bin/bprestore -C $CLIENT -D $CLIENT \
-s “${BACKUP_DATE} 00:00:00” -e “${BACKUP_DATE} 23:59:59” \
/data/
echo “3. 恢复应用配置…”
/usr/openv/netbackup/bin/bprestore -C $CLIENT -D $CLIENT \
-s “${BACKUP_DATE} 00:00:00” -e “${BACKUP_DATE} 23:59:59” \
/opt/app/
echo “==========================================”
echo “完整恢复完成”
EOF
# chmod +x /opt/scripts/full_restore.sh
5. 数据库恢复
数据库恢复需要使用数据库特定的恢复方法。author:www.itpux.com
# 查看Oracle备份
# /usr/openv/netbackup/bin/bplist -C fgedu-db01 -t 4 -R -l /
-rw-r–r– oracle dba 1048576000 Apr 03 22:00 /cntrl_1234_1_1234567890
-rw-r–r– oracle dba 2097152000 Apr 03 22:00 /arch_1234_1_1234567891
-rw-r–r– oracle dba 5242880000 Apr 03 22:00 /al_1234_1_1234567892
# 使用RMAN恢复
# rman target / catalog rman/rman@rcat
RMAN> RUN {
ALLOCATE CHANNEL ch0 TYPE ‘SBT_TAPE’;
SEND ‘NB_ORA_CLIENT=fgedu-db01,NB_ORA_POLICY=fgedu_db_backup’;
RESTORE CONTROLFILE FROM ‘cntrl_1234_1_1234567890’;
ALTER DATABASE MOUNT;
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS;
RELEASE CHANNEL ch0;
}
# 恢复特定表空间
RMAN> RUN {
ALLOCATE CHANNEL ch0 TYPE ‘SBT_TAPE’;
SEND ‘NB_ORA_CLIENT=fgedu-db01’;
SQL ‘ALTER TABLESPACE users OFFLINE IMMEDIATE’;
RESTORE TABLESPACE users;
RECOVER TABLESPACE users;
SQL ‘ALTER TABLESPACE users ONLINE’;
RELEASE CHANNEL ch0;
}
# 时间点恢复
RMAN> RUN {
ALLOCATE CHANNEL ch0 TYPE ‘SBT_TAPE’;
SEND ‘NB_ORA_CLIENT=fgedu-db01’;
SET UNTIL TIME “TO_DATE(‘2026-04-03 10:00:00’, ‘YYYY-MM-DD HH24:MI:SS’)”;
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS;
RELEASE CHANNEL ch0;
}
# SQL Server恢复
# 使用SQL Server Management Studio
# 或使用命令行
# sqlcmd -S fgedu-mssql01 -Q “RESTORE DATABASE fgedu_db FROM DISK = ‘backup_file.bak'”
# MySQL恢复
# 恢复全量备份
# mysql -u root -p < /backup/mysql/full_backup.sql
# 恢复增量备份
# mysqlbinlog /backup/mysql/binlog.000123 | mysql -u root -p
6. 虚拟机恢复
虚拟机恢复包括完整VM恢复和文件级恢复。
# /usr/openv/netbackup/bin/bplist -C fgedu-vc01 -t 40 -R -l /
drwxr-xr-x root root 0 Apr 03 22:00 /VMware/fgedu-vm01/
-rw-r–r– root root 52428800000 Apr 03 22:00 /VMware/fgedu-vm01/fgedu-vm01.vmdk
-rw-r–r– root root 1048576 Apr 03 22:00 /VMware/fgedu-vm01/fgedu-vm01.nvram
-rw-r–r– root root 8192 Apr 03 22:00 /VMware/fgedu-vm01/fgedu-vm01.vmx
# 完整VM恢复
# 使用vCenter Web界面
# 1. 登录vCenter
# 2. 选择”恢复”
# 3. 选择备份策略和恢复点
# 4. 选择目标位置
# 5. 执行恢复
# 使用命令行恢复VM
# /usr/openv/netbackup/bin/bprestore -C fgedu-vc01 -D fgedu-vc01 \
-s 04/03/2026 00:00:00 -e 04/03/2026 23:59:59 \
-vm /VMware/fgedu-vm01/
# VM文件级恢复
# 1. 挂载VM备份
# 2. 浏览VM文件
# 3. 选择需要恢复的文件
# 4. 执行恢复
# 使用VRAS恢复
# /usr/openv/netbackup/bin/nbvault -vcenter fgedu-vc01 \
-vm fgedu-vm01 \
-restorepoint 04/03/2026 \
-action mount
# 查看挂载点
# ls /mnt/vm_restore/fgedu-vm01/
fgedu-vm01.vmdk
fgedu-vm01.nvram
fgedu-vm01.vmx
7. 时间点恢复
时间点恢复将数据恢复到特定时间点状态。
# /usr/openv/netbackup/bin/bpimagelist -client fgedu-app01 -U
Backup ID: fgedu-app01_1712120400
Backup Time: 04/03/2026 22:00:00
Schedule: Full_Backup
Backup ID: fgedu-app01_1712206800
Backup Time: 04/04/2026 22:00:00
Schedule: Incr_Backup
# 恢复到特定时间点
# /usr/openv/netbackup/bin/bprestore -C fgedu-app01 -D fgedu-app01 \
-s “04/03/2026 00:00:00” -e “04/03/2026 15:00:00” \
-L /tmp/point_restore.log \
/data/app/
# 使用时间戳恢复
# /usr/openv/netbackup/bin/bprestore -C fgedu-app01 -D fgedu-app01 \
-bt 04/03/2026 10:00:00 \
/data/app/config.xml
# 查看时间点备份内容
# /usr/openv/netbackup/bin/bplist -C fgedu-app01 -t 0 \
-s “04/03/2026 10:00:00” -e “04/03/2026 10:59:59” \
-R -l /data/app/
# 增量备份时间点恢复
# 1. 恢复最近的全量备份
# /usr/openv/netbackup/bin/bprestore -C fgedu-app01 -D fgedu-app01 \
-s “04/02/2026 22:00:00” -e “04/02/2026 23:59:59” \
/data/app/
# 2. 依次恢复增量备份
# /usr/openv/netbackup/bin/bprestore -C fgedu-app01 -D fgedu-app01 \
-s “04/03/2026 22:00:00” -e “04/03/2026 23:59:59” \
/data/app/
# 3. 恢复到目标时间点
# /usr/openv/netbackup/bin/bprestore -C fgedu-app01 -D fgedu-app01 \
-s “04/04/2026 00:00:00” -e “04/04/2026 10:00:00” \
/data/app/
8. 跨客户端恢复
跨客户端恢复将数据恢复到不同的客户端。
# /usr/openv/netbackup/bin/bprestore -C fgedu-app01 -D fgedu-app02 \
-s 04/03/2026 00:00:00 -e 04/03/2026 23:59:59 \
-L /tmp/cross_restore.log \
/data/app/config.xml
# 配置跨客户端恢复权限
# 在源客户端创建文件
# cat > /usr/openv/netbackup/db/altnames/fgedu-app02 << 'EOF'
fgedu-app02
EOF
# 或允许所有客户端
# cat > /usr/openv/netbackup/db/altnames/No.Restrictions << 'EOF'
*
EOF
# 跨客户端恢复目录
# /usr/openv/netbackup/bin/bprestore -C fgedu-app01 -D fgedu-app02 \
-s 04/03/2026 00:00:00 -e 04/03/2026 23:59:59 \
-R /tmp/relocate.txt \
/data/app/
# cat /tmp/relocate.txt
change /data/app/ to /data/restored_from_app01/
# 验证跨客户端恢复
# ssh fgedu-app02 "ls -la /data/restored_from_app01/"
total 2048
drwxr-xr-x 2 root root 4096 Apr 3 10:30 .
drwxr-xr-x 3 root root 4096 Apr 3 10:30 ..
-rw-r--r-- 1 root root 1048576 Apr 3 10:30 config.xml
-rw-r--r-- 1 root root 2097152 Apr 3 10:30 data.db
9. 恢复监控
恢复监控跟踪恢复作业状态。
# /usr/openv/netbackup/bin/bpdbjobs -jobtype Restore -report
Job ID: 12345
Job Type: Restore
State: Done
Status: 0
Client: fgedu-app01
Start Time: 04/03/2026 10:00:00
End Time: 04/03/2026 10:30:00
Files: 12345
Kilobytes: 1048576
# 查看特定作业详情
# /usr/openv/netbackup/bin/bpdbjobs -jobid 12345 -all_columns
Job ID: 12345
Job Type: Restore
State: Done
Status: 0
Policy: fgedu_prod_backup
Schedule: Full_Backup
Client: fgedu-app01
Active PID: 12345
Start Time: 04/03/2026 10:00:00
End Time: 04/03/2026 10:30:00
Files: 12345
Kilobytes: 1048576
Percent Complete: 100
# 实时监控恢复进度
# /usr/openv/netbackup/bin/bpdbjobs -follow -jobid 12345
Job ID: 12345
State: Active
Percent Complete: 45%
Files Completed: 5555
Files Remaining: 6790
# 取消恢复作业
# /usr/openv/netbackup/bin/bpdbjobs -cancel 12345
Job 12345 was successfully cancelled.
# 查看恢复错误
# /usr/openv/netbackup/bin/bperror -client fgedu-app01 -restorestat -U
Client: fgedu-app01
Status: 0 (successful)
Start Time: 04/03/2026 10:00:00
End Time: 04/03/2026 10:30:00
Errors: 0
# 恢复监控脚本
# cat > /opt/scripts/restore_monitor.sh << 'EOF'
#!/bin/bash
JOB_ID=$1
if [ -z "$JOB_ID" ]; then
echo "Usage: $0
exit 1
fi
while true; do
STATE=$(/usr/openv/netbackup/bin/bpdbjobs -jobid $JOB_ID | grep “State:” | awk ‘{print $2}’)
PERCENT=$(/usr/openv/netbackup/bin/bpdbjobs -jobid $JOB_ID | grep “Percent Complete:” | awk ‘{print $3}’)
echo “Job ID: $JOB_ID, State: $STATE, Progress: $PERCENT”
if [ “$STATE” != “Active” ] && [ “$STATE” != “Queued” ]; then
break
fi
sleep 10
done
echo “Restore job $JOB_ID completed”
EOF
# chmod +x /opt/scripts/restore_monitor.sh
10. 故障处理
恢复故障处理帮助解决常见问题。
# 错误代码 2: 文件未找到
# 错误代码 24: Socket write failed
# 错误代码 40: Network connection broken
# 错误代码 41: Network connection timed out
# 错误代码 48: Client hostname could not be found
# 错误代码 50: Client process aborted
# 错误代码 58: Could not connect to client
# 查看错误详情
# /usr/openv/netbackup/bin/bperror -S 24 -r
Status code 24: socket write failed
# 解决网络问题
# 检查客户端连接
# /usr/openv/netbackup/bin/bpclntcmd -pn
# /usr/openv/netbackup/bin/bpclntcmd -hn fgedu-nbu-master
# 检查端口
# netstat -an | grep 1556
# netstat -an | grep 13724
# 解决权限问题
# 检查文件权限
# ls -la /usr/openv/netbackup/
# chown -R root:root /usr/openv/netbackup/
# 解决介质问题
# 检查介质状态
# /usr/openv/netbackup/bin/admincmd/bpmedialist -U
# 冻结介质
# /usr/openv/netbackup/bin/admincmd/bpmedia -freeze -m ABC123
# 解冻介质
# /usr/openv/netbackup/bin/admincmd/bpmedia -unfreeze -m ABC123
# 恢复故障排查脚本
# cat > /opt/scripts/restore_troubleshoot.sh << 'EOF'
#!/bin/bash
echo "NBU恢复故障排查"
echo "=========================================="
echo "1. 检查客户端连接"
/usr/openv/netbackup/bin/bpclntcmd -pn
echo ""
echo "2. 检查备份镜像"
/usr/openv/netbackup/bin/bpimagelist -U -hoursago 24
echo ""
echo "3. 检查介质状态"
/usr/openv/netbackup/bin/admincmd/bpmedialist -U
echo ""
echo "4. 检查存储单元"
/usr/openv/netbackup/bin/admincmd/bpstulist -U
echo ""
echo "5. 检查恢复作业"
/usr/openv/netbackup/bin/bpdbjobs -jobtype Restore -report
echo ""
echo "6. 检查错误日志"
/usr/openv/netbackup/bin/bperror -U -hoursago 24 | grep -i error
echo ""
echo "=========================================="
EOF
# chmod +x /opt/scripts/restore_troubleshoot.sh
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
