在开始复制磁盘之前,您可能需要进入单用户模式,以便关闭系统守护进程并保留日志状态,并防止用户登录
/sbin/telinit 1 |
复制硬盘时,您需要复制所有目录和文件,包括链接。
但是,您不想复制目录/new-disk,因为这将把新磁盘复制到自身!
此外,您需要在新磁盘上创建/proc目录,但您不想复制其内容/proc是一个虚拟文件系统,不包含任何实际文件,而是包含有关系统上运行的进程的信息。
以下是将旧磁盘复制到新磁盘的三种不同方法。这可能需要相当长的时间,特别是如果您的磁盘很大或内存很小。您可以期望每分钟能够复制 10 Mb,甚至更多。
您可以通过从另一个终端使用 df 命令来跟踪复制进度。尝试 watch df 或 watch ls -l /new-disk 以查看每两秒更新一次的报告;按 Ctrl-C 结束显示。请注意,运行 watch 程序本身会减慢复制速度。
这是最简单的方法,但仅在您的原始 Linux 系统位于单个磁盘分区上时才有效。
选项-a尽可能多地保留原始系统。选项-x将 cp 限制为单个文件系统;这是避免复制/new-disk和/proc目录所必需的。
SuSE 专用。仅使用此方法,您还必须创建目录/dev/pts在新磁盘上。使用命令 mkdir /new-disk/dev/pts"。
注意:当使用-x选项时,最新版本的 cp 将创建目录/new-disk/new-disk和/new-disk/proc,尽管这些目录将是空的。如果创建了这些目录,您应该删除/new-disk/new-disk,并保留/new-disk/proc。
(将所有内容写在一行上)
这将转到根目录,然后复制除/new-disk和/proc之外的所有文件和目录到/new-disk。请注意,ls 后的第一个选项是数字 1,而不是字母 L!
此命令应在所有情况下都有效。
(将所有内容写在一行上)
最后一个目录,/new-disk,是 cp 命令的目标目录。所有其他目录都是源目录。因此,我们将列出的所有目录复制到/new-disk.
使用此方法,您只需自己列出要复制的目录。这里我们列出了除/new-disk和/proc之外的所有目录。如果您因任何原因无法使用其他方法,您始终可以使用此命令手动指定要复制的目录。
仅使用此方法,如果根目录本身中有任何文件,则需要另一个命令来复制它们。特别是,Debian 和 Slackware 需要这样做,因为这些发行版将文件放在根目录中
cp -dp /* /.* /new-disk |
迷你教程的先前版本指出您也可以使用 tar 来复制磁盘,但发现此方法存在错误。当然,还有许多其他方法可以复制磁盘,但这三种方法是最简单、最快、最可靠的。
在使用这三种方法中的任何一种之后,您还必须在新磁盘上创建/proc目录(如果它尚不存在)
mkdir /new-disk/proc |
此时,您可以根据需要验证新磁盘上的文件结构
umount /new-disk fsck.ext2 -f /dev/hdb1 mount -t ext2 /dev/hdb1 /new-disk |
如果新磁盘有多个分区,您必须在运行 fsck.ext2 之前从最底层向上卸载它们:在上面提到的示例中,您将首先卸载第 3 级分区,然后是第 2 级分区,然后是第 1 级分区。
您还可以比较两个磁盘,以确保文件已正确复制
find / -path /proc -prune -o -path /new-disk -prune -o -xtype f -exec cmp {} /new-disk{} \; |
(将所有内容写在一行上)
仅限 Slackware。 基本的 Slackware 安装(仅“A”系列)不包含 cmp 命令,因此如果您仅安装了基本文件,则将无法运行此命令。cmp 命令位于“AP1”系列中。)
这只会比较常规文件,而不是字符或块特殊文件(在/dev目录中)、套接字等,因为 cmp 命令无法正确处理这些文件。我们欢迎关于如何验证这些“特殊”文件的建议。