如何复制硬盘分区?

时间:2009-06-30 08:35:13

标签: c windows ntfs

斐伊川

我想将一个NTF分区复制到同一类型和相同大小的另一个分区。我尝试使用windows功能 Copyfile()和它工作但速度慢是一个问题。然后我用readfile()和WriteFile()而不是Copyfile()再次速度是一个问题。

我怎样才能获得更好的速度...... ??

我在内核模式下执行了相同的操作,并使用zwCreatefile(),zwReadfile()&和zwWriteFile()...

我怎样才能获得更好的速度.....?

我想将硬盘分区复制到另一个分区。我的源和目标分区是NTF和相同的大小。为此目的首先我通过复制所有扇区并且它正在工作,但我想复制仅使用的扇区......

然后我通过读取FSCTL_VOLUME_BITMAP找到使用过的簇。但这一个也很慢..我想获得更好的速度。我还试图通过使用FSCTL_GET_RETEIVAL_POINTER获取使用过的集群。但这是一个缓慢的......

最后我尝试了Windows API CopyFile()......但是一切都表现得很慢......

我基本上知道内核模式(振铃0)的速度比用户模式慢(即使0号环可以直接访问硬件)......

除了他们之外,我还尝试通过在CreateFile中设置OVERLAPPED标志进行异步操作....获得小改进....

我已经拍摄了卷的快照(卷影复制)并使用Hobo复制方法复制了文件......但是所有内容都提供了相同的速度......

任何想法帮助......

我使用了Acronis Disk软件导演套件。我发现它的速度后惊呼...... !!!!!!

有任何想法可以帮助我......获得良好的速度....... ???

与本节相关的白皮书的任何链接...... ???


感谢你

2 个答案:

答案 0 :(得分:2)

我认为最简单的方法是使用Linux Live Distribution或Linux Rescue Disk。

在终端中启动后,您必须键入(如果“/ dev / hda1”是源分区,“/ dev / hdb1”是目标):

dd if=/dev/hda1 of=/dev/hdb1 bs=64k

使用“dd_rescue”代替“dd”,您也可以使用“dd_rescue”。

小心使用合适的设备!除此之外,它的效果非常好!

沃纳

答案 1 :(得分:0)

为了帮助您,您必须与我们分享您对“更好的速度”的定义。

为了计算预期速度(粗略),您需要知道 1.块设备的原始性能是什么(在您的情况下是硬盘?) 2.您需要传输的数据大小

因此,如果您的分区获得X1和X2 mb / s并且有Y mb要复制且两个分区不在同一物理设备上,您应该期望副本以y / min(X1,X2)完成秒。再次 - 这是一个粗略的估计,只是一些参考点,所以我们可以给“更好的速度”这个词赋予意义

你得到的结果比估计的慢多少?