Linux命令-restore(从转储文件恢复文件系统)
Linux命令-restore从转储文件恢复文件系统快速参考基本语法安装 restoredump 与 restore 概述restore 模式详解常用选项完整恢复流程示例交互式恢复示例从远程备份恢复恢复到不同位置故障排查现代备份方案对比总结快速参考restore是用于从dump命令创建的备份文件中恢复文件的工具。它专门用于恢复 ext2/ext3/ext4 文件系统的备份可以完全恢复整个文件系统也可以交互式地恢复单个文件或目录。restore与dump配对使用是 Linux 传统备份解决方案的重要组成部分。⚠️ 重要restore只能恢复由dump命令创建的备份文件。如果使用其他工具如tar、rsync备份不能使用restore恢复。现代替代对于现代 Linux 系统更推荐使用rsync、tar或专用备份工具如Timeshift、BorgBackup。基本语法# 基本语法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--versiondump 与 restore 概述# dump创建备份 # dump 创建 ext2/3/4 文件系统的备份支持增量备份# 备份级别0-90表示完全备份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 ./lostfound# 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 目录 指定临时文件目录默认 /tmprestore-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|grepfile.txt# 步骤2进入交互式恢复cd/tmp/restore restore-i-f/backup/home_backup_0.dump# 步骤3在交互式界面中浏览并选择文件restorelsrestorecdhome/user1/documents restorels# 找到要恢复的文件important.docrestoreaddimportant.doc# 添加到恢复列表restoreaddreport.pdf# 可以添加多个文件restorels# 查看恢复列表标记的文件会显示为 *# * 200 important.doc# * 201 report.pdfrestoreextract# 执行恢复# 系统会询问卷号直接按回车使用默认值restorequit# 退出# 步骤4查看恢复的文件ls-la/tmp/restore/home/user1/documents/从远程备份恢复# 如果备份文件在远程服务器上# 方法1通过 SSH 直接读取restore-r-f(sshuserremote_hostcat /backup/home_backup.dump)# 方法2先下载到本地再恢复scpuserremote_host:/backup/home_backup.dump /local/backup/ restore-r-f/local/backup/home_backup.dump# 方法3通过管道直接恢复需要支持命名管道sshuserremote_hostcat /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故障排查# 问题1restore 报错 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 restoresetmodes restoreextract# 问题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总结核心价值restore是dump的配套恢复工具专门用于恢复 ext 文件系统的备份。最佳实践定期执行完全备份0级和增量备份1-9级备份后验证备份文件完整性定期测试恢复流程确保备份可用将备份存储在异地或云端防止本地灾难常用组合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在生产环境中请考虑使用更现代的备份工具。