我使用的是 Ubuntu 12.04。我有一张旧的 4GB SD 卡,刚买了一张新的 16GB SD 卡。我想将旧的 4GB SD 卡上的所有内容复制到新的 16GB SD 卡上。我担心通常的复制粘贴技巧会遗漏某些内容,所以我想将旧的 4GB SD 卡克隆到 16GB SD 卡上。我dd
在 shell 中使用了该命令,按照此链接。
这种方法有效,但有一个小问题。新 SD 卡现在显示为 4GB。后来我发现这是因为 16GB SD 卡上的主分区现在已缩小到 4GB。我已经解决了这个问题,我想我明白了。但是,我现在的问题是,如何将旧的 4GB SD 卡克隆到新的 16GB SD 卡上,而不会使 16GB SD 卡上的主分区缩小到 4GB?
答案1
您将始终将主分区缩小到复制分区的大小,除非您复制内容使用 dd 来管理您的分区。
如果您没有两个 SD 卡插槽,我假设您做了类似的事情sudo dd if=/dev/sda/ of=/dev/sdb bs=4k
或使用图像文件作为临时存储。使用此命令,您将分区以及分区表复制到新的 SD 卡。
尝试这个(假设您的分区名为/dev/sda1
):
- 插入 4 GB SD 卡
sudo dd if=/dev/sda1 of=~/sdcard.bin
- 放入 16 GB 的 SD 卡,并确保主分区跨越整个 16 GB
sudo dd if=~/sdcard.bin of=/dev/sda1
这应该只会复制您的分区的内容。
您也可以简单地调整新 SD 卡上的分区大小。如果您想要了解这方面的一些信息,您必须告诉我们您的 SD 卡上使用哪种文件系统。
答案2
即使您将分区大小设置为 16GB,文件系统元数据也是为 4GB 分区创建的,并且不会自动增长。
修复此问题的更简单方法是启动gparted
并扩展分区以使用整个磁盘 - 它将负责修复分区和文件系统。
如果旧 SD 卡上没有分区表,请在新卡上转储sda
并创建sda1
16GB 的分区,然后使用 dd 将映像写入该分区。您仍然需要gparted
像 @Earendil 描述的那样进行检查。
答案3
同样的事情也发生在了这里。实际上,我使用了sda1,不是 sda
最简单的方法是使用 Gparted:
- 右键单击该分区。
- 选择
check
。 - 使用 Gparted 运行检查(绿色对勾)。
- Gparted 尝试纠正分区错误。
就我而言,确实如此。SDHC 卡现在可以正确读取 16GB(之前 GParted 将克隆分区显示为分区内的已用空间)。当你掌握了 Ubuntu 和这些 Ubuntu 工具后,你会发现它们非常强大。希望这对你有所帮助。
答案4
只是想补充一点,我能够直接从一张 SD 卡到另一张 SD 卡完成这项工作,同时通过 USB 安装,使用以下代码:
sudo dd if=/dev/sdc of=/dev/sdb
我遇到了这样的问题:新的 SD 卡(最初为 64gb)现在读取的是克隆 SD 卡的大小(8gb) - 而 Gparted 检查似乎无法解决这个问题。
我确信我会解决这个问题 - 只是想将我的结果和技术直接使用一张卡发布到另一张卡上。