在linux中,如何创建/恢复整个驱动器的图像快照?


14

我被Windows实用程序所破坏,这些实用程序会为您的整个驱动器拍摄数字快照,然后您可以在发生驱动器崩溃时从中恢复。(例如,适用于Mac OS X的Time Machine)。

在Linux中有这样的方法吗?


1
我认为你在Windows中被破坏的方式与Linux用户实际拥有系统实用程序一样被破坏。:)

Answers:


12

您想要的工具(最类似于Time Machine)称为rsnapshot。与普通备份工具不同,它只复制已更改的内容,并且可以让您轻松地前往多个时间点。您可以告诉它允许多少磁盘空间,并调整保持在该限制内的快照数量。一个非常好的工具。


6

PartImage从命令行运行或作为文本GUI运行。它比dd有一个重要优势:

Partimage只会复制分区的已使用部分的数据。为了提高速度和效率,不会将空闲块写入映像文件。这与'dd'命令不同,后者也复制空块。


6

你可以简单地做“ dd if=/dev/sda of=/path/to/target/backup”,如果你知道你有房间,你试图把它。你也可以做“ dd if=/dev/sda | bzip2 > /path/to/target/backup”即时压缩。这可能需要一些时间。

或者,您可以tar --preserve-permissions -cjf backup.tar.bz2 /what/to/backup作为具有所有必要读取权限的用户执行“ ”。随便挑选。

附录:我最近买了一台预装Vista的新笔记本电脑。我想我想在某个地方保留vista,以防我想在某个时候试用它,所以我第一次启动计算机(使用linux livecd)时,我这样做了:

dd if=/dev/sda | ssh 10.0.0.1 "bzip2 > ~/vistadrive.bz2"

当然,这是在快速的本地网络上。否则在传输之前压缩会更加谨慎:

dd if=/dev/sda | bzip2 | ssh 10.0.0.1 "cat > ~/vistadrive.bz2"

希望你能找到一些有用的东西。

编辑:哎呀。改变bbdd...


1
这也不包括引导扇区吗?当使用partimage备份Windows驱动器时,这总是搞砸了我。

格雷格,它将包括一切,包括任何分区表和mbr
Johannes Schaub - litb

4

我使用双重策略:#1是LVM快照 ,第二个是rsnapshot,我用它来为专用外部硬盘驱动器进行时间点备份。放置外部硬盘驱动器,以便在发生不良事件时我可以轻松地将其拉出门。除了定期将快照刻录到一系列加密的DVD光盘并将它们运送到另一个城市的朋友所在地进行存储之外,我还没有使用场外机制。

我强烈建议使用rsnapshot,因为它使用硬链接进行快照,使用硬链接来处理未更改的内容。如果您的主目录变得疯狂,您可以在重新安装或从驱动器故障中恢复后,将rsnapshot副本和tarpipe或rsync重新发送回新的主分区。


3

一些。有老式的dd(1),有点神秘; 有dump(8)恢复(8) ; 有很多开源产品,比如Amanda ; 如果需要,您可以安装ZFS并使用cron脚本来定期拍摄快照,为您提供与Time Machine完全相同的内容(请参阅Tim Foster的博客。)

维基百科有一篇文章,其中列出了许多选项


2

如果你想要一个文件级备份,如时间机器,那么我强烈建议rsnapshot作为诺曼建议。

如果你想要一个完整的图像备份和恢复类型解决方案,比如norton ghost,那么我发现CloneZilla工作得很好。我启动Live CD,然后使用另一台机器作为SSH服务器来备份/恢复图像到/从。

(我甚至设法通过PXE启动获得实时版本,用于我没有CD驱动器且没有USB启动的旧平板笔记本电脑,但这是一个很大的小问题。)

你也可以将它用于Windows机器。


1

当驱动器的大小不同时,我总是担心使用dd。或者有不同数量的头/扇区/轨道/等。

在快照和重新刷新同一驱动器时,dd非常有用。特别是USB驱动器或Windows分区。但是当从500Meg驱动到1500Meg驱动器时,我感到担忧。

此外,当我的驱动器出现故障时,我希望能够以此为借口升级到更新的操作系统。


总而言之,好老的焦油做得很好! GNU-tar包括diff-tar-against-filesonly-update-files-have-changedonly-archive-files-new-than-date选项。

(我应该提一下:几年前我遇到了一个错误,要求我下载并安装更新版本的GNU-tar。(与很长的路径名和多卷有关。)没什么大不了的。请注意这总是一种选择。)

您应该排除/ proc/ sys/ var / log / lastlog/ mnt。(我通常会备份到安装在/ mnt下的外部驱动器。备份备份 - 不太好!)

包括/ dev可能是值得的。 gnu-tar将正确处理设备(mknod)。虽然您可能不会在还原过程中使用备份/ dev。(偶尔可以很高兴看到之前设置的权限或链接。)

此外,您可能希望备份之前转储fdiskrpm信息。例如

/sbin/sfdisk -l /dev/sda > /....../info_sda
rpm -qa | sort > /...../info_rpms
rpm -qa --qf "%{ARCH} \t %{NAME}-%{VERSION}-%{RELEASE}\n" | sort -k2,2 > /........./info_rpms_arch

以及安装任何“可选的” 用户安装文件系统。


1

这是另一种方法的完整步骤,适用于从一个硬盘驱动器移动到另一个硬盘驱动器,甚至在硬件相似时克隆机器。

首先,创建一个良好的工作系统的图像。以root身份执行此操作。

# cd / 
# tar cpzf hostname.tgz / --exclude=hostname.tgz --exclude=proc --exclude=lost+found --exclude=mnt --exclude=sys --exclude=home --exclude=usr/src

备份内核映像

# mount /boot
# cd /boot
# tar cpzf boot.tgz *

使用live cd / gentoo cd启动您希望部署映像的计算机。安装该硬盘并正确分区:

# fdisk /dev/hda
/dev/hda1  /boot
/dev/hda2  swap
/dev/hda3  /tmp
/dev/hda4  /

添加文件系统

# mke2fs /dev/hda1
# mkswap /dev/hda2
# mke2fs -j /dev/hda3
# mke2fs -j /dev/hda4

装载驱动器:

# mount /dev/hda4 /mnt/new_root
# mkdir /mnt/new_root/tmp
# mkdir /mnt/new_root/boot
# mkdir /mnt/new_root/proc
# mkdir /mnt/new_root/sys
# mount /dev/hda3 /mnt/new_root/tmp
# mount /dev/hda1 /mnt/new_root/boot
# swapon /dev/hda2
# mount -t proc proc /mnt/new_root/proc

将hostname.tgz文件复制到此计算机上。

将其解压缩到新计算机的根目录/ mnt / new_root中

# tar -xzf hostname.tgz

Chroot进入新环境。

# chroot /mnt/new_root /bin/bash
# env-update && source /etc/profile

验证/boot/grub/grub.conf和/ etc / fstab

在硬盘上设置grub:

# grep -v rootfs /proc/mounts > /etc/mtab
# grub-install /dev/hda

退出并卸载驱动器,重新启动计算机。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.