我正在使用装有 Debian 操作系统的 Nano Pi 设备。操作系统映像存在于其内部存储器(8 GB)中。使用的内存总大小约为 4GB。我想将此操作系统备份到映像文件中。
做完之后
dd if=/dev/mmcblk1 of=NanoPi.img bs=8M status=progress
整个映像文件大小高达 8GB。如何才能使映像只包含内存使用量而不是全部内存?
答案1
您无法轻松地使用,dd
因为块设备只是字节的转储。它可能包含未分配空间中长期删除的文件的数据。dd
不知道这一点,因为这是文件系统的工作。您有几种选择:
继续使用 dd
... 并接受更大的空间使用量。相反,请执行类似 的操作dd if=/dev/mmcblk1 of=NanoPi.img bs=64K conv=noerror,sync status=progress
。较小的块大小可在发生读取错误时为您提供更多安全性。如果dd
无法读取至少一个扇区 - 则不会处理该块的其余部分。块大小是您可能因一个坏扇区而丢失的最大字节数。conv=noerror
确保在发生错误时继续克隆。在conv=sync
发生读取错误时将目标文件中的指针向前移动,以便数据保持对齐并因此有效。
您可以dd
通过管道输出gzip
来压缩数据并节省一些空间:
dd if=/dev/mmcblk1 bs=64K conv=noerror,sync status=progress | gzip -c > NanoPi.img.gz
要返回原始图像,请执行以下操作gunzip -c ./NanoPi.img.gz > NanoPi.img
。
使用 rsync
... 并处理原始文件。。rsync -aAXv /path/to/mounted/mmcblk1 /path/to/destination/folder
这可能对您有用,也可能没用,这取决于您的文件系统是否已安装。