阅读 Nemeth 的书的一个版本(内梅特等人),已阅读volcopy
- 一种实用程序,可将文件系统从一个设备复制到另一个设备,从而制作“文字副本”(这是一个手册页,虽然不是也有帮助)。
书中说该实用程序适用于 Linux,但快速谷歌搜索并没有显示很多结果。所以问题是——它是否在 Linux 上使用,如果没有,镜像复制文件系统的默认替代方案是什么?dump
和restore
?
编辑。我认为这样的实用程序在例如硬盘更换的情况下可能很有用——目前我正在使用它dd
来复制根分区等,这很快,但显然保留了分区的大小。所以我认为volcopy
可能是一个快速的替代方案,允许复制到更大的分区。dump
|restore
如果我没记错的话,请允许这样做。
答案1
您可以使用dd
将数据从一台设备复制到另一台设备。
dd if=/my/source/device of=/my/dest/device bs=4096
dd
将对源进行逐字节复制,当然您将无法在正在运行的文件系统上执行此操作,这很可能会导致数据损坏。如果您使用文件系统或其他一些实用程序(例如LVM
具有快照功能),您可以创建快照并复制它。
lvcreate -L1G -s -n my-snapshot-of-lvname /dev/vgname/lvname
dd if=/dev/vgname/my-snapshot-of-lvname of=/my/dest/path bs=4096
lvremove /dev/vgname/my-snapshot-of-lvname
LVM
还有一些用于卷管理的内置工具。
Linux 有文件系统btrfs
,它是一个新的仍然不稳定的文件系统(受到 Solaris ZFS 的启发)。 Btrfs 尚未准备好用于生产,但它很可能能够完成您需要的一切。
当然,您也可以使用 rsync (我推荐 a-flag),但这不是卷复制,但在大多数情况下它会工作得很好。
rsync -a /source /path
答案2
您正在寻找的是一种方法克隆文件系统、磁盘或分区。特别参见
cat
使用或克隆整个磁盘或分区cp
是最简单的方法。有没有理由使用dd
, 特别是从dd
较慢。它要求不安装文件系统,并且还会复制空白空间,因此它可能会很慢。
在 Linux 上(或者更准确地说,使用 GNU coreutils),cp -a
在复制文件和保留元数据方面做得很好,但它并不完美。另外,即使磁盘未满,复制文件也会变慢,因为一次复制大量磁盘比来回复制文件的每个片段要快得多。
如果您的磁盘或分区位于袭击-1(镜像RAID)卷并且您想将它们复制到新磁盘,您可以将新磁盘添加到阵列中。这非常快,比在块设备上使用更不容易出错cat
,并且可以在安装所有内容的情况下在线完成。不这样做的唯一原因是当您的源分区不在 RAID-1 卷上时;您可以将普通的旧分区变成 Linux 软件 RAID-1 卷,但这需要一些低级工作。
如果您要复制的文件系统位于左心室容量卷,可以使用LVM的镜像功能。
答案3
答案4
dd
是最古老的 UNIX 实用程序之一,它的作用正是:复制磁盘。但通常您并不需要完全相同的副本,因为没有理由浪费时间和空间来复制磁盘的未使用部分。
虽然dump
确实在未安装的块设备上运行,但restore
不会,并且它们一起不会重现精确的文件系统的副本。相反,它们只是备份和恢复文件系统中的文件,很像tar
,只是速度更快。
如果您希望创建一个可以完全恢复原样的智能磁盘映像,那么您需要像 Clonezilla 或 Ghost4Linux 这样的东西,它们足够智能,可以跳过复制未使用的磁盘块。但它们仍然无法恢复到小于原始磁盘的磁盘,也不能有选择地恢复单个文件,也不能进行增量备份。出于这些原因,我更喜欢传统的备份实用程序,例如dump
或tar
。