仙桃市护送信息网

Solaris系统多用户模式下系统备份和多分区写入磁带

2026-03-30 19:37:01 浏览次数:0
详细信息

核心思路与规划

目标:将Solaris系统上一个或多个关键文件系统(如 /, /usr, /export/home 等)备份到磁带设备上。 工具:主要使用Solaris经典的 ufsdump 命令。它专为备份完整的UFS文件系统设计,能保留文件属性、ACL、稀疏文件等,并支持增量备份。 磁带设备:通常为 /dev/rmt/0(第一个磁带驱动器)。可能还有其他别名如 /dev/rmt/0cn(不重绕,无压缩)。 多分区写入:即在一个磁带上连续写入多个备份集。通过指定 ufsdump-S(估算大小)和 -a(自动加载)等参数,并控制磁带不重绕,可以实现。 前提条件

详细步骤

步骤1:系统检查与准备

确认运行级别

who -r

输出应显示运行级别 3

查看文件系统布局和磁盘使用情况

df -h

确定你要备份的分区及其挂载点(例如:/, /usr, /export/home)。

检查磁带设备

mt -f /dev/rmt/0 status

如果命令未找到,可能需要先加载 st 驱动或检查硬件。cfgadm -al 可以查看磁带机状态。

步骤2:选择备份策略 步骤3:执行备份到磁带

我们将演示如何将 //export/home 两个文件系统连续写入同一盘磁带。

重要概念:使用 /dev/rmt/0nn 表示 no rewind,不重绕)来确保在写完一个文件系统后,磁带停在当前位置,以便下一个备份集可以接着写入。

备份第一个文件系统 (根分区 /)

ufsdump 0ucf /dev/rmt/0cn /dev/rdsk/c0t0d0s0

备份第二个文件系统 (/export/home)

ufsdump 0ucf /dev/rmt/0cn /dev/rdsk/c0t0d0s7

(可选) 写入文件结束标记并倒带 如果你想现在取出磁带,最好写入一个文件结束标记(EOF)并倒带。

mt -f /dev/rmt/0n weof  # 在当前位置写入两个文件结束标记(这是磁带的标准做法)
mt -f /dev/rmt/0 rewind # 然后倒带,准备用于恢复
步骤4:验证备份

方法A:使用 ufsrestore 查看磁带内容

查看第一个备份集(根分区)的目录

ufsrestore tf /dev/rmt/0

查看第二个备份集

ufsrestore tf /dev/rmt/0n

方法B:使用 mt 命令操作磁带

自动化脚本示例

你可以将上述过程编写成一个Shell脚本,例如 /usr/local/bin/full_system_backup.sh

#!/bin/bash
# full_system_backup.sh
# 多分区备份到磁带脚本

TAPE_DEV="/dev/rmt/0cn"
DUMP_OPTS="0ucf"
LOG_FILE="/var/log/backup_$(date +%Y%m%d).log"

# 要备份的文件系统及其原始设备
# 格式: “挂载点:原始设备”
FS_TO_BACKUP=(
    "/:/dev/rdsk/c0t0d0s0"
    "/usr:/dev/rdsk/c0t0d0s6"
    "/export/home:/dev/rdsk/c0t0d0s7"
)

echo "=== 开始系统备份 $(date) ===" >> $LOG_FILE

# 倒带并清空磁带开头
mt -f /dev/rmt/0 rewind
mt -f /dev/rmt/0 erase  # 注意:这会擦除整盘磁带!确保是新带或可覆盖。

for fs_item in "${FS_TO_BACKUP[@]}"; do
    MOUNT_POINT="${fs_item%%:*}"
    RAW_DEV="${fs_item##*:}"
    echo "正在备份 $MOUNT_POINT (设备: $RAW_DEV) ..." | tee -a $LOG_FILE

    # 执行备份
    ufsdump $DUMP_OPTS $TAPE_DEV $RAW_DEV 2>&1 | tee -a $LOG_FILE
    if [ ${PIPESTATUS[0]} -ne 0 ]; then
        echo "错误: $MOUNT_POINT 备份失败!" | tee -a $LOG_FILE
        exit 1
    fi
    echo "--- $MOUNT_POINT 备份完成 ---" | tee -a $LOG_FILE
done

# 写入结束标记并倒带
echo "写入磁带结束标记并倒带..." | tee -a $LOG_FILE
mt -f /dev/rmt/0n weof
mt -f /dev/rmt/0 rewind

echo "=== 备份流程全部完成 $(date) ===" >> $LOG_FILE
echo "备份日志已保存至: $LOG_FILE"

使用脚本前

chmod +x /usr/local/bin/full_system_backup.sh 赋予执行权限。 仔细修改 FS_TO_BACKUP 数组,使其匹配你的系统。 特别注意:脚本中的 erase 命令会擦除整盘磁带,首次使用时建议注释掉,或先用废带测试。

恢复数据关键命令

当需要从磁带恢复时,定位到对应的备份集,然后使用 ufsrestore

交互式恢复单个文件

mt -f /dev/rmt/0 rewind        # 倒带到开头
mt -f /dev/rmt/0n fsf 1        # 如果需要,跳到第二个备份集
ufsrestore -i -f /dev/rmt/0n   # 进入交互模式

ufsrestore> 提示符下,可以使用 ls, cd, add, extract 等命令。

恢复整个文件系统到临时目录

ufsrestore -rf /dev/rmt/0n

重要注意事项

稳定性:在多用户模式下备份,系统文件可能正在被写入。ufsdump 会尽量保持一致性,但对于极度活跃的数据库,仍建议有应用级的静默或快照配合。 设备名:你的磁带设备名可能不同(如 /dev/rmt/1)。使用 ls /dev/rmt/* 查看。 原始设备:务必备份原始设备(/dev/rdsk/*),而不是块设备(/dev/dsk/*)。 磁带容量:提前估算备份数据量(ufsdump -S /dev/rdsk/c0t0d0s0),确保磁带容量足够。多分区写入时更要注意。 日志:始终记录备份的详细信息(日期、级别、分区、磁带编号),并将 ufsdump 输出重定向到日志文件。 测试恢复定期进行恢复测试是备份策略中必不可少的一环,确保磁带和备份数据是可用的。

通过以上步骤,你可以在Solaris多用户模式下,安全、有效地执行多分区系统备份到磁带的操作。

相关推荐