dant
217 天前
说起这个我就不困了.jpg
我来说说之前同一机器不同硬盘迁移系统的时候遇到过的坑吧:
1. DiskGenius/ntfsclone 之类的块级操作的工具,不支持两个硬盘不同 LBA 大小(消费级硬盘普遍 512 ,DC 级/企业级硬盘普遍 4096 )
1.1 BitLocker 中 LBA 参与加密,不能简单按块复制到起始 LBA 不同的分区,同时会通过 System Volume Information 中的占位文件保留空间用于存放元数据以及移动分区头(推测是为了不移动整个分区启用加密),因此也不能在两个已解锁的 BitLocker 分区之间按块复制(
2. DISM/ImageX 、以及 RoboCopy/FastCopy/rsync 之类的文件级复制工具,不能完整读取或者恢复 NTFS 元数据,包括但不限于稀疏文件(某些虚拟机镜像)、硬链接(比如 WinSxS )、WSL1 、OneDrive/NextCloud 等网盘客户端的占位文件等等
2.1 如果你已经用这种方式操作过网盘的同步文件夹,可能网盘里的数据已经变得一团糟了……
结论:如果两个硬盘 LBA 大小相同并且不需要复制完后即为加密状态,按块复制是最优解,虽然没有第一方工具(如果 PowerShell 里自己写 C# 不算的话,手动狗头)
如果两个硬盘 LBA 大小不一样,目前可能不存在特别好的方法。虽然现在回想起来按块复制之后不影响 Linux 系统挂载,似乎可以修改 NTFS 头里的 LBA 大小信息(或者使用 ntfsresize 之类的工具一键处理)让 Windows 可以正常挂载。
另外关于 PE 自带的 dism 有权限问题,很可能只是因为 PE 自带的版本老了……