gpt4 book ai didi

c - 如何复制硬盘分区?

转载 作者:行者123 更新时间:2023-11-30 14:31:27 26 4
gpt4 key购买 nike

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

如何才能获得更好的速度...??

我在内核模式下执行了相同的操作,但使用 zwCreatefile() 、zwReadfile() 和 zwWriteFile() 性能下降...

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

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

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

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

我知道从根本上来说内核模式(ring 0)的速度比用户模式慢,(即使ring 0可以直接访问硬件)......

除了这些之外,我还尝试通过在 CreateFile 中设置 OVERLAPPED 标志来进行异步操作......得到了小小的改进......

我已经拍摄了卷的快照(卷影副本)并使用 Hobo 复制方法复制了文件...但一切都给出了相同的速度...

有什么想法可以帮助...

我用过Acronis Disk 管理套件,发现它的速度我惊呼......!!!!!!

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

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

<小时/>

谢谢

最佳答案

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

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

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

您还可以使用“dd_rescue”来代替某些救援发行版中的“dd”。

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

维尔纳

关于c - 如何复制硬盘分区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1062455/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com