restore命令是Linux系统中用于恢复由dump命令创建的备份文件。它是dump/restore备份套件的一部分,专门用于从ext2/ext3/ext4文件系统的备份中恢复文件和目录。
restore [选项] [参数]
restore有四种主要模式:
-i 交互模式-r 恢复整个文件系统-C 比较备份与磁盘内容-t 列出备份内容-x 提取特定文件/目录| 选项 | 说明 |
|---|---|
-b blocksize |
指定块大小(单位为KB) |
-C |
比较备份与磁盘上的文件 |
-D filesystem |
指定要恢复的文件系统 |
-f file |
从指定文件读取备份数据 |
-h |
不恢复符号链接,而是恢复链接指向的文件 |
-i |
进入交互模式 |
-m |
按inode号而不是文件名恢复文件 |
-r |
恢复整个文件系统 |
-s fileno |
跳过磁带上的前fileno个备份文件 |
-t |
列出备份文件中的内容 |
-v |
显示详细的处理信息 |
-x |
从备份中提取指定文件 |
-y |
遇到错误时不询问,直接继续 |
大多数Linux发行版默认安装了dump和restore工具。如果没有安装,可以使用以下命令:
sudo apt update
sudo apt install dump
sudo yum install dump
# 或使用dnf(Fedora/RHEL8+)
sudo dnf install dump
sudo pacman -S dump
首先使用dump命令创建备份文件:
# 创建一个测试目录和文件
mkdir -p /tmp/test_backup
echo "Important data 1" > /tmp/test_backup/file1.txt
echo "Important data 2" > /tmp/test_backup/file2.txt
mkdir /tmp/test_backup/subdir
echo "Subdirectory file" > /tmp/test_backup/subdir/file3.txt
# 使用dump创建备份(0级别,完整备份)
dump -0uf /tmp/backup.dump /tmp/test_backup/
# 查看备份文件
ls -lh /tmp/backup.dump
查看备份文件中包含哪些文件和目录:
# 列出备份内容
restore -tf /tmp/backup.dump
# 使用详细模式
restore -vtf /tmp/backup.dump
从备份中提取特定文件或目录:
# 创建恢复目录
mkdir /tmp/restored_files
# 进入恢复目录
cd /tmp/restored_files
# 提取file1.txt
restore -xf /tmp/backup.dump ./file1.txt
# 提取整个subdir目录
restore -xf /tmp/backup.dump ./subdir/
# 提取所有文件
restore -xf /tmp/backup.dump
使用交互模式选择性恢复文件:
# 进入交互模式
restore -if /tmp/backup.dump
# 交互模式下常用命令:
# ls [目录] - 列出目录内容
# cd [目录] - 切换目录
# pwd - 显示当前目录
# add [文件] - 添加要恢复的文件
# delete [文件] - 从恢复列表中删除文件
# extract - 开始恢复已添加的文件
# quit - 退出
比较备份文件与磁盘上的文件差异:
# 修改原始文件
echo "Modified content" > /tmp/test_backup/file1.txt
# 比较备份与当前文件
restore -C -f /tmp/backup.dump -D /tmp/test_backup
恢复整个文件系统备份:
# 警告:这通常用于恢复根分区或其他文件系统
# 需要在单用户模式下进行
# 假设我们有一个文件系统备份在/dev/sda1上
# 首先挂载文件系统(如果需要)
mkdir /mnt/restore_point
mount /dev/sda1 /mnt/restore_point
# 切换到挂载点
cd /mnt/restore_point
# 恢复整个文件系统
restore -rf /backup/backup.dump
从磁带设备恢复备份:
# 列出磁带设备上的备份内容
restore -tf /dev/nst0
# 从磁带提取文件
restore -xf /dev/nst0 /path/to/extract
# 跳过前2个备份文件
restore -s 2 -tf /dev/nst0
# 对于分卷备份,restore会自动提示插入下一卷
restore -rf /dev/st0
# 使用脚本自动化多卷恢复
echo "准备恢复多卷备份..."
restore -rf /dev/nst0 << EOF
yes
EOF
dump支持增量备份,restore也支持恢复增量备份链:
# 假设有以下备份链:
# full.dump - 完整备份
# inc1.dump - 第1次增量备份
# inc2.dump - 第2次增量备份
# 首先恢复完整备份
cd /mnt/restore_point
restore -rf /backup/full.dump
# 然后按顺序恢复增量备份
restore -rf /backup/inc1.dump
restore -rf /backup/inc2.dump
# 从远程服务器恢复备份
# 方法1:使用ssh
ssh user@backup-server "cat /backup/backup.dump" | restore -tf -
# 方法2:挂载远程文件系统
mount -t nfs backup-server:/backups /mnt/remote
restore -tf /mnt/remote/backup.dump
在交互模式(restore -i)下,可以使用以下命令:
| 命令 | 说明 |
|---|---|
help |
显示可用命令列表 |
ls [目录] |
列出当前或指定目录内容 |
cd [目录] |
切换到指定目录 |
pwd |
显示当前目录路径 |
add [文件/目录] |
添加要恢复的文件或目录 |
delete [文件/目录] |
从恢复列表中删除项目 |
extract |
开始恢复已添加的文件 |
setmodes |
设置文件模式而不提取文件 |
verbose |
切换详细模式 |
quit |
退出交互模式 |
what |
显示已添加的要恢复的项目 |
-y选项跳过错误继续恢复mt命令重新定位磁带restore -x或交互模式恢复删除的文件恢复备份需要足够的空间来存放:
restore -t)创建文件系统备份的命令
通用归档工具,也可用于备份
远程同步和备份工具