分配完整空间后如何缩小图像文件


13

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

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

我试图了解Cygwin的分区情况,但是无法使fdisk正常工作(-bash:fdisk:未找到命令)-(在读取了包含未分区空间的16Gb卡的图像,结束:截断可能吗?

Answers:


12

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

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

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

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


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

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

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

在Windows上有任何方式吗?
Flash Thunder

1
您可以从GParted Live USB启动。
迈克·罗伯茨

7

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


0

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

  1. 使用GParted缩小SD卡上的分区。
  2. 从更大的卡上使用Win32DiskImager创建映像。
  3. 使用上面提到的选项,在较小的卡上用Win32DiskImager写入图像。

-1

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

另一种方法是仅备份文件。下面介绍我的方法。 /raspberrypi//a/28087/8697


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

2
压缩无济于事。IMG文件所在的磁盘空间无关紧要。它的SD卡上的空间,无论在哪里IMG文件应被写入
托马斯·韦勒

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

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

@Thomas哦,我认为OP出于某种原因(而不是还原它们)希望将其备份存储在另一张SD卡上。
user253751 '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.