我每天都会备份我的 Debian 网络服务器。周日做一次完整备份,每周其他天做一次差异备份。
备份是用Tar做的。我将整个系统备份到Tar文件中。
如果我的网络服务器上的硬盘坏了,我会将所有备份保存在一个安全的地方。
但是,在新硬盘上使用前一天的差异备份进行裸机恢复的最佳方法是什么?我可以使用启动 CD 启动,然后格式化新硬盘并将备份文件解压到其中吗?我该怎么做呢?
编辑:
这是我的备份脚本:
#!/bin/sh
# Backup script
BACKUPDIR="/backups"
BACKUPFILE=$BACKUPDIR/backup_$(date +%y-%m-%d).tgz
if [ ! -d $BACKUPDIR ]; then
mkdir $BACKUPDIR
fi
if [ -f $BACKUPFILE ]; then
echo "Backup file already exists and will be replaced."
rm $BACKUPFILE
fi
apt-get clean
tar czpf $BACKUPFILE --same-owner \
--exclude=$BACKUPDIR \
--exclude=/boot/grub/menu.lst* \
--exclude=/home/error.log \
--exclude=/proc \
--exclude=/media \
--exclude=/dev/* \
--exclude=/mnt \
--exclude=/sys/* \
--exclude=/cdrom \
--exclude=/lost+found \
--exclude=/var/cache/* \
--exclude=/tmp / 2>/home/error.log
答案1
简单地恢复硬盘是不够的,您可能还需要您的启动记录,我几乎不相信它存在于您的备份中(我错了吗?如果我这样做对您来说更好!)...
假设您已将服务器调至可以启动的程度(我个人更喜欢创建附加分区,/boot
该分区将具有或kernel
类似的东西,以便您执行基本的维护任务)。您还可以使用 Linux 发行版的实时 CD。initrd
busybox
把你的未来安置root partition
在某个地方并恢复你的备份。
tar
是为磁带创建的,因此它支持附加到具有相同名称的存档文件。如果您使用此方法,则untar -xvpf backup.tar -C /mnt
需要恢复“上周日”备份并应用到所需日期的顺从部分。
您应该记住,有很多东西您不应该备份,例如:/proc
、、、、(可能还有一些/dev
,具体取决于您的需要)。/sys
您需要在创建备份之前处理好它,否则在恢复过程中可能会非常麻烦!/media
/mnt
使用整个服务器的备份方法时,您很容易忽略许多要点:
- 用于恢复的命令可能会有很大差异,这取决于您用于备份数据的实际命令。
- 引导记录
- 恢复后内核映像和模块正常且相互匹配
- 忽略备份时不需要的内容而不是恢复。
- 等等等等...
关于该方法的一些优点可以在Ubuntu Wiki:备份您的系统/TAR. 寻找恢复。
顺便提一句:
- 您是否曾尝试过恢复您的某个备份?
- 您是否考虑过改变您的备份策略?
- 您是否考虑过将需要备份的数据与系统设置分开(如今有一些好东西可以管理系统配置,因此可以轻松地像
puppet
或一样毫无痛苦地恢复chief
,因此您唯一应该关心的是真实数据)
聚苯硫醚
我建议你读几本杰夫阿特伍德关于备份的帖子 http://www.codinghorror.com/blog/2008/01/whats-your-backup-strategy.html和http://www.codinghorror.com/blog/2009/12/international-backup-awareness-day.html
答案2
- 使用某些 LiveCD 启动
- 对新硬盘进行分区。
- 将它安装在某处,一切都在正确的位置(如果您有单独的 /var 或 /home,那么请这样做)
- 将文件复制回来
- 创建具有适当访问权限和所有者的备份目录,例如 /mnt /proc /sys /dev/
- 使用以下命令在 dev 中创建文件:MAKEDEV generic
- 将 /proc /sys /dev 绑定到目标
- Chroot 到目标目录
- 根据新的 UUID 更新 /etc/fstab
- update-grub 和 grub-install
- 卸载所有东西并重启
答案3
看一下http://www.mondorescue.org/因为它可以在不关闭机器的情况下进行在线备份。
答案4
如果差异备份不是强制性的,那么裸机备份/恢复的最佳选择是 ddrescue :http://www.gnu.org/software/ddrescue/ddrescue.html