这取决于分区的确切用途以及副本的用途。但是,我会说通常来说,这dd
是不适合备份文件系统的工具。这也不是本来打算的。
使用cp -a
或rsync
代替。然后,您当然需要创建目标分区,因此它并不是那么简单,但却更加安全和灵活。如果您需要创建文件系统映像,请参见下文。
如果您打算复制根文件系统,则绝对不要使用dd
。您必须使用类似rsync -ax
(或cp -ax
在单独的顶层目录上)的东西,因为其中有一堆必须不包含在副本中的东西。在Linux上,这包括:
/dev
/lost+found
/mnt
/proc
/run
/sys
/tmp
其中一些实际上是内核接口,而不是磁盘上的真实目录。如果您复制它们,那么您将复制一堆将不适用于该副本的信息。如果尝试使用该系统运行系统,则将浪费空间,因为实际接口将安装在顶部。其他的则包含正在运行的进程正在使用的临时信息,而这些问题就更成问题了,因为如果您复制这些信息,系统将无法清理垃圾。
如果要创建根文件系统(或任何文件系统)的映像文件,请创建一个空的映像文件-这适合用于dd
:
dd if=/dev/zero of=whatever.img bs=1024 count=1000000
那是一个1024 MB的图像(1000000 * 1024)。调整count
是否需要其他尺寸。在ext
文件中创建一个文件系统:
mke2fs whatever.img
它会警告您这不是真正的阻止设备。继续。现在挂载映像文件:
mount whatever.img /mnt/img
/mnt/img
必须存在,但可以。您现在可以rsync
(或cp -a
)进入/mnt/img
。whatever.img
卸载时,内容将保留在内部。
然而...
为了清楚起见,如果出于任何原因绝对需要映像文件,请仅使用刚刚描述的文件系统映像方法。如果您的目标是将分区复制到另一个硬盘驱动器,则不需要映像:在该驱动器上创建一个空文件系统的新分区,将其挂载并复制到其中。您可以将文件系统内容放到一个空目录中并进行存档:
tar -czf myarchive.tar.gz [the directory path]
然后,可以将其放置在现有(空或其他)分区中,方法是将其放在顶层并使用:
tar -xzf myarchive.tar.gz
请注意,如果现有文件的路径与存档中的某些内容匹配,则会覆盖现有文件。否则,它将使现有目录层次结构保持不变。