![将 uSD 卡备份到最小的 img/zip 文件中](https://linux22.com/image/914036/%E5%B0%86%20uSD%20%E5%8D%A1%E5%A4%87%E4%BB%BD%E5%88%B0%E6%9C%80%E5%B0%8F%E7%9A%84%20img%2Fzip%20%E6%96%87%E4%BB%B6%E4%B8%AD.png)
我想备份我自制的基于 RPI 的 mp3 播放器。里面有一张 16GB 的 uSD 卡,只使用了 4GB 的数据。当我使用 dd 复制整个 uSD 卡作为备份时,我得到了一个 16GB 的 img 文件。压缩后大约有 8GB。
您是否知道如何将 uSD 上未使用的所有数据“清零”,从而使 zip 变得更高效?
或者,我可以使用 gparted 来减小分区的大小,但这听起来对我来说有点复杂(我不知道 tmp 文件需要多少空间等)
答案1
如果文件系统是 ext2、ext3 或 ext4,那么您可以考虑使用零自由用零填充未分配的块。
例如卸载分区 /dev/sdf1 上的 ext2/3/4 文件系统将是:
sudo zerofree /dev/sdf1
答案2
我对 vfat 使用“zerofill”如下:
挂载 uSD 卡,然后转到根文件夹:
cd 安装点
用零填充空白处:
sudo dd if=/dev/zero of=tmp-file
rm tmp-file
备份到 img 文件中
sudo dd if=/dev/sde of=mybackup.img bs=32M
tar -cvzf mybackup.tgz mybackup.img
在我的示例中,剥离 SD 卡之前的文件大小为:8860766726 之后为:2552202816
注意:此方法会写入微型 SD 的整个未使用内存,从而缩短其使用寿命!