我正在尝试备份Raspberry Pi(Raspbian)SD卡。我正在使用Win32DiskImager将图像(从SD卡读取器)成功读取到我的HDD上-但现在大小出现了问题。该图像仅比原始SD卡大,并且只能写回到更大的SD卡上,如果备份该SD卡,则存在相同的问题。

创建.img文件后,如何可以再次删除所有未使用的空间吗?
(这是因为我使用raspi-config将所有可用空间分配给了根吗?)

我试图了解分区的含义(s)与Cygwin相似,但无法使fdisk工作(-bash:fdisk:命令未找到)-(在读取最后包含未分区空间的16Gb卡的图像后:截断了吗?)

#1 楼

因此,我发现最好的方法是使用GParted(您可以使用基于Linux的操作系统,也可以从GParted Live USB启动)。查找有关如何详细执行每个步骤的详细说明非常简单,但这是我发现可以使用的常规方法:


运行GParted,找到您的SD卡在设备列表中,并将主分区缩小到尽可能小的大小。
取该分区的最后一个扇区的值,然后乘以扇区大小(对我来说是512;我认为这是标准的,尽管您可以在设备的GParted设置中进行检查):这将为您提供要复制的总字节数。
将总字节数除以4096(如果需要,可以四舍五入-最好多花一点时间)空间不足),这将为您提供“计数”,然后在Linux环境中的终端上输入以下命令(您可以从GParted Live USB操作系统终端或在Cygwin中执行此操作,而无需使用sudo这么长的时间) (以管理员身份运行时):

sudo dd if=/dev/mmcblk0 of=/path/to/your/file.img bs=4k count=<count>

如果需要,请更改输入设备的位置。这应该为您提供一个最终的图像文件,该文件应尽可能小,省去空白空间。

评论


我可以验证这可行。几分钟前,我刚刚尝试过将它从8GB卡更改为4GB卡。只要您的数据小于目标卡,这应该可以工作。

–PNDA
16年6月9日在17:05

自从我继续前进以来,整理一下忘了这篇文章。将来会尝试。似乎这是一个常见问题,因此感谢您的输入。

–雷尼尔·德尔波特(Renier Delport)
16年7月4日在16:48

这应该被标记为正确答案!谢谢!

–rodripf
16-11-19在15:43

在Windows上有任何方式吗?

– Flash Thunder
16 Dec 19'在17:26

您可以从GParted Live USB启动。

–麦克·罗伯茨(Mike Roberts)
16 Dec 20'在11:36

#2 楼

存在一个名为pishrink的不错的工具,该工具可以通过收缩根分区来最大程度地减小dd图像的大小。如果您是第一次启动还原的映像,则再次将分区扩展到其最大大小。如果运行Windows,只需在Raspberry上使用Linux来缩小图像。

评论


这确实是一个很好的选择,因为脚本提供了一些选项,可以在首次启动时自动扩展文件系统,删除日志和机密信息,并在缩小后压缩映像。

–gromain
20-10-14在9:56

@gromain是的。同时,社区为Pishrink添加了许多其他有用的功能。

–抽筋
20-10-18在12:06

#3 楼

最新版本的Win32DiskImager具有选项“只读分配的分区”。
它仅写入已用空间,不能为空。


使用GParted缩小SD卡上的分区。
创建映像从更大的卡上使用Win32DiskImager。
在更高的卡上使用Win32DiskImager在较小的卡上写入映像。


#4 楼

简单的答案是你做不到。如果要缩小图像,请使用压缩功能,这是大多数操作(在'NIX gzip上效果很好)。您可以在此站点上找到许多有关此主题的讨论。

替代方法是仅备份文件。下面介绍了我的方法。
https://raspberrypi.stackexchange.com/a/28087/8697

评论


您可以(如果数据内容小于新的SD卡)

–野生
15年11月21日在16:39

压缩无济于事。 IMG文件所在的磁盘空间无关紧要。与要写入IMG文件的SD卡上的空间有关

–托马斯·韦勒(Thomas Weller)
16年8月31日在12:39

@Thomas压缩IMG文件会使它变小,以便(希望)适合您要写入的SD卡....我丢失了什么吗?

–user253751
16-10-11在2:49



@immibis:您可以gzip IMG文件,以便它在PC硬盘上使用更少的空间。如果将压缩后的数据写入SD卡,则不会启动。数据必须采用正确的格式才能启动,并且不是gzip格式。

–托马斯·韦勒(Thomas Weller)
16-10-11在6:13

@Thomas哦,我以为OP出于某种原因(而不是还原它们)将备份存储在另一个SD卡上。

–user253751
16-10-11在7:29