复制硬盘

复制硬盘

我想简单地将一个硬盘驱动器复制到另一个相同大小的硬盘驱动器。

我知道我可以简单地做:

dd if=/dev/sda of=/dev/sdb

(或驱动器名称中的任何名称/dev)。

有没有更好的工具可以显示我的视觉进步?如果我只使用 30GB 的驱动器,传输 30GB 所需的时间是一样长还是驱动器容量一样长?

答案1

你可以让 GNUdd向你展示进展 - 引用手册页:

向正在运行的“dd”进程发送 USR1 信号,使其将 I/O 统计信息打印到标准错误,然后恢复复制。

$ dd if=/dev/zero of=/dev/null& pid=$!
$ kill -USR1 $pid; sleep 1; kill $pid

希利的ddSDD) 有类似的选项,并且默认使用 SIGQUIT ( Ctrl+\)。

关于你的第二个问题:是的,dd只需复制所有块(如果文件系统是否使用) - 这需要 DEVICE_CAPACITY/TRANSFER_RATE 秒。

如果您想避免复制未使用的磁盘块,您可以使用tar

# cd /mnt/sda
# tar -c -f - . | tar -C /mnt/sdb -x -f -

GNUtar也有计时选项:

# tar -c -f - . --totals=SIGQUIT | tar -C /mnt/sdb -x -f - \
                                      --totals --totals=SIGQUIT

Ctrl+\因此,您可以在命中时和结束时获得读/写统计信息。

另一种可能性是使用parted或者gparted用于复制文件系统 - 应该使用它有足够知识的文件系统以有效的方式完成。至少gparted应该显示一个漂亮的图形进度对话框。

答案2

也许你可以使用ddrescue /dev/sda /dev/sdb它支持错误并有一个进度条

答案3

我建议您使用该pv程序(它位于我所知道的所有发行版的存储库中)。它会给你一个很好的进度条。

$dd if=/dev/sda |pv -s 80g |dd of=/dev/sdb

您可以-s添加要复制的原始分区/磁盘的数量(if在 dd 命令中)。如果您不提出参数,-s它只会给您一个移动条来指示数据正在移动,但不会告诉您移动量。

当然sudo如果需要的话可以添加。

相关内容