Linux命令-restore(从转储文件恢复文件系统)

📅 2026/7/9 10:04:33 👁️ 阅读次数 📝 编程学习
Linux命令-restore(从转储文件恢复文件系统)

Linux命令-restore(从转储文件恢复文件系统)

    • 快速参考
    • 基本语法
    • 安装 restore
    • dump 与 restore 概述
    • restore 模式详解
    • 常用选项
    • 完整恢复流程示例
    • 交互式恢复示例
    • 从远程备份恢复
    • 恢复到不同位置
    • 故障排查
    • 现代备份方案对比
    • 总结

快速参考

restore是用于从dump命令创建的备份文件中恢复文件的工具。它专门用于恢复 ext2/ext3/ext4 文件系统的备份,可以完全恢复整个文件系统,也可以交互式地恢复单个文件或目录。restoredump配对使用,是 Linux 传统备份解决方案的重要组成部分。

⚠️ 重要restore只能恢复由dump命令创建的备份文件。如果使用其他工具(如tarrsync)备份,不能使用restore恢复。

现代替代:对于现代 Linux 系统,更推荐使用rsynctar或专用备份工具(如TimeshiftBorgBackup)。

基本语法

# 基本语法restore[选项][文件...]# 完全恢复(从0级备份开始,然后依次恢复增量备份)restore-r-f备份文件# 交互式恢复(浏览备份内容并选择要恢复的文件)restore-i-f备份文件# 仅列出备份内容,不恢复restore-t-f备份文件

安装 restore

# restore 是 dump/restore 包的一部分# Debian/Ubuntusudoaptupdatesudoaptinstalldump# RHEL/CentOSsudoyuminstalldump# Arch Linux (AUR)yay-Sdump# 验证安装whichrestore restore--version

dump 与 restore 概述

# === dump:创建备份 ===# dump 创建 ext2/3/4 文件系统的备份,支持增量备份# 备份级别:0-9,0表示完全备份,1-9表示增量备份# 创建完全备份(0级)sudodump-0u-f/backup/home_backup_0.dump /home# 创建增量备份(1级,仅备份自0级后更改的文件)sudodump-1u-f/backup/home_backup_1.dump /home# 参数说明:# -0 :备份级别0(完全备份)# -1 :备份级别1(增量备份)# -u :更新 /etc/dumpdates 文件(记录备份时间)# -f 文件:指定备份文件路径# -z :压缩备份文件# -M :创建多卷备份# === restore:恢复备份 ===# restore 从 dump 创建的备份文件中恢复数据

restore 模式详解

# === 模式1:-r(完全恢复)===# 完全恢复整个文件系统# 步骤:# 1. 创建空目录用于恢复mkdir/restore_homecd/restore_home# 2. 首先恢复0级备份(完全备份)sudorestore-r-f/backup/home_backup_0.dump# 3. 然后依次恢复增量备份sudorestore-r-f/backup/home_backup_1.dumpsudorestore-r-f/backup/home_backup_2.dump# 注意:必须按照备份级别顺序恢复(0->1->2...)# === 模式2:-i(交互式恢复)===# 交互式恢复,可以浏览备份内容并选择要恢复的文件cd/restore_home restore-i-f/backup/home_backup_0.dump# 进入交互式界面后,可以使用以下命令:# ls :列出当前目录内容# cd 目录 :切换目录# pwd :显示当前路径# add 文件... :添加要恢复的文件/目录# delete 文件... :从恢复列表中删除# extract :执行恢复# setmodes :设置文件权限# quit :退出# 示例交互式会话:# restore > ls# 5 . 4096 May 10 12:00 home/# restore > cd home# restore > ls# 10 . 4096 May 10 12:00 user1/# restore > cd user1# restore > ls# 15 . 4096 May 10 12:00 documents/# 20 file.txt 1024 May 10 12:00 file.txt# restore > add file.txt# restore > extract# 输入卷号(通常按回车使用默认值)# restore > quit# === 模式3:-t(列出备份内容)===# 仅列出备份文件中的内容,不恢复restore-t-f/backup/home_backup_0.dump# 输出示例:# Dump date: Wed Jan 10 14:30:00 2024# Dumped from: the epoch# Level 0 dump of /home on server:/dev/sda2# Label: None# 2 ./# 11 ./lost+found# 100 ./user1# 101 ./user1/documents# 102 ./user1/documents/file1.txt# 103 ./user1/file.txt# === 模式4:-x(选择性恢复)===# 从备份中恢复指定文件restore-x-f/backup/home_backup_0.dump ./home/user1/file.txt# 恢复多个指定文件restore-x-f/backup/home_backup_0.dump ./home/user1/file1.txt ./home/user1/file2.txt

常用选项

# -f 文件 :指定备份文件路径restore-t-f/backup/home_backup.dump# -r :完全恢复模式restore-r-f/backup/home_backup.dump# -i :交互式恢复模式restore-i-f/backup/home_backup.dump# -t :列出备份内容restore-t-f/backup/home_backup.dump# -x 文件... :恢复指定文件restore-x-f/backup/home_backup.dump ./path/to/file# -v :详细模式(显示恢复过程)restore-v-r-f/backup/home_backup.dump# -y :对所有询问回答 yes(非交互模式)restore-y-r-f/backup/home_backup.dump# -h :仅恢复目录的元数据(不恢复文件内容)restore-h-r-f/backup/home_backup.dump# -N 目录 :仅在指定目录中恢复(不恢复整个文件系统)restore-N/home/user1-r-f/backup/home_backup.dump# -T 目录 :指定临时文件目录(默认 /tmp)restore-T/var/tmp-r-f/backup/home_backup.dump# -b 块大小 :指定备份设备的块大小restore-b64-r-f/backup/home_backup.dump

完整恢复流程示例

# === 场景:系统崩溃后,从备份恢复 /home 文件系统 ===# 步骤1:创建用于恢复的目录mkdir/restore_homecd/restore_home# 步骤2:恢复0级备份(完全备份)echo"正在恢复0级备份..."sudorestore-r-f/backup/home_backup_0.dump# 输出:# Restore tape/device is /backup/home_backup_0.dump# Begin level 0 restore# Extract directories from tape# Extract files from tape# Set directory ownership and permissions# 步骤3:恢复1级增量备份echo"正在恢复1级备份..."sudorestore-r-f/backup/home_backup_1.dump# 步骤4:恢复2级增量备份echo"正在恢复2级备份..."sudorestore-r-f/backup/home_backup_2.dump# 步骤5:验证恢复的文件echo"验证恢复的文件..."ls-la/restore_home/home/# 步骤6:将恢复的文件复制回原位置(如果需要)sudocp-a/restore_home/home/* /home/# 步骤7:设置正确的权限sudochown-Ruser:user /home/user

交互式恢复示例

# === 场景:仅恢复误删的单个文件 ===# 步骤1:查看备份中有哪些文件restore-t-f/backup/home_backup_0.dump|grep"file.txt"# 步骤2:进入交互式恢复cd/tmp/restore restore-i-f/backup/home_backup_0.dump# 步骤3:在交互式界面中浏览并选择文件restore>lsrestore>cdhome/user1/documents restore>ls# 找到要恢复的文件:important.docrestore>addimportant.doc# 添加到恢复列表restore>addreport.pdf# 可以添加多个文件restore>ls# 查看恢复列表(标记的文件会显示为 *)# * 200 important.doc# * 201 report.pdfrestore>extract# 执行恢复# 系统会询问卷号,直接按回车使用默认值restore>quit# 退出# 步骤4:查看恢复的文件ls-la/tmp/restore/home/user1/documents/

从远程备份恢复

# 如果备份文件在远程服务器上# 方法1:通过 SSH 直接读取restore-r-f<(sshuser@remote_host"cat /backup/home_backup.dump")# 方法2:先下载到本地,再恢复scpuser@remote_host:/backup/home_backup.dump /local/backup/ restore-r-f/local/backup/home_backup.dump# 方法3:通过管道直接恢复(需要支持命名管道)sshuser@remote_host"cat /backup/home_backup.dump"|restore-r-f-# 注意:某些版本的 restore 不支持从标准输入读取(-f -)# 这种情况下只能先下载到本地

恢复到不同位置

# 默认情况下,restore 会按照备份时的绝对路径恢复# 例如:备份了 /home/user1,恢复时会创建 ./home/user1# 如果要将文件恢复到不同位置# 方法1:在正确的目录中执行 restoremkdir/new_homecd/new_home restore-r-f/backup/home_backup.dump# 这样文件会被恢复到 /new_home/home/user1/...# 方法2:使用 -N 选项指定目标目录restore-r-N/new_home-f/backup/home_backup.dump

故障排查

# 问题1:restore 报错 "not a dump tape"# 原因:备份文件不是由 dump 创建的,或者文件损坏# 解决:确认备份文件来源,检查文件完整性file/backup/home_backup.dump# 正确输出:/backup/home_backup.dump: dump/restore tape image# 问题2:恢复时提示 "volume not found"# 原因:多卷备份的中间卷缺失# 解决:确保所有卷都在,-f 指定第一个卷,后续卷会在指定位置查找# 问题3:恢复后文件权限不正确# 解决:使用 -setmodes 选项(在交互式模式中使用 setmodes 命令)restore-i-f/backup/home_backup.dump restore>setmodes restore>extract# 问题4:增量备份恢复顺序错误# 解决:必须按 0->1->2... 的顺序恢复# 查看备份级别:restore-t-f/backup/home_backup_1.dump|head-5# 输出中会显示 "Level 1 dump ..."# 问题5:磁盘空间不足# 解决:确保恢复目标分区有足够空间df-h/restore_home

现代备份方案对比

# === dump/restore(传统方案)===# 优点:# 1. 支持增量备份# 2. 保留所有文件属性(权限、所有者、ACL等)# 3. 专门用于 ext 文件系统,效率高# 缺点:# 1. 仅支持 ext2/3/4 文件系统# 2. 需要专用工具恢复# 3. 不支持加密、压缩(需要配合其他工具)# === tar(通用方案)===# 优点:# 1. 通用性强,几乎所有 Linux 都支持# 2. 支持多种压缩算法# 3. 保留文件属性# 缺点:# 1. 增量备份不如 dump 灵活# 2. 恢复单个文件需要扫描整个归档# 示例:使用 tar 备份和恢复sudotar-czvf/backup/home.tar.gz /homesudotar-xzvf/backup/home.tar.gz-C/restore# === rsync(实时同步方案)===# 优点:# 1. 增量传输效率高# 2. 支持本地和远程同步# 3. 保留文件属性# 缺点:# 1. 不是传统意义上的"备份"(快照)# 2. 如果源文件被误删,目标也会同步删除# 示例:使用 rsync 备份rsync-avz/home/ /backup/home/# === BorgBackup(现代方案)===# 优点:# 1. 去重备份(节省空间)# 2. 加密备份# 3. 压缩# 4. 支持挂载备份(通过 FUSE)# 缺点:# 1. 需要额外安装# 2. 学习曲线稍陡# 示例:使用 BorgBackupborg create /backup/repo::backup1 /home borg extract /backup/repo::backup1

总结

核心价值restoredump的配套恢复工具,专门用于恢复 ext 文件系统的备份。

最佳实践

  1. 定期执行完全备份(0级)和增量备份(1-9级)
  2. 备份后验证备份文件完整性
  3. 定期测试恢复流程,确保备份可用
  4. 将备份存储在异地或云端,防止本地灾难

常用组合

  • dump -0u -f backup.dump /home:创建完全备份
  • restore -t -f backup.dump:查看备份内容
  • restore -i -f backup.dump:交互式恢复
  • restore -r -f backup.dump:完全恢复

⚠️ 注意dump/restore不支持 ext4 的某些新特性(如 extents),在生产环境中请考虑使用更现代的备份工具。