因此,我想使用我的 Ubuntu 笔记本电脑将我对 Raspian 所做的事情备份,并按照以下链接中的建议进行操作。因此使用这个命令... sudo dd if=/dev/mmcblk0 of=~/sd-card-copy.img bs=1M status=progress 这一切都很好,但是,我的笔记本电脑只有 24Gb 的备用空间,而存储卡是 128Gb!这个命令似乎想要写入整个存储卡大小,即使它只有 10Gb 的数据。
我有一个可以共享的服务器地址,其中有空间,但是我如何将“dd”命令指向另一个区域?起初我以为我可以更改到该目录并运行该命令,但它会将其放入我的“home”文件夹中。提前感谢帮助。
答案1
首先,我认为理解您使用的命令很重要。就其本质而言,它是(输入文件)dd
的逐位复制,当您给它一个(输出文件)时,它会生成一个完美的文件副本。这包括任何零。您还必须记住,文件表实际上并不代表设备上的内容,只是您通常可以看到的内容。这就是为什么当您尝试使用恢复软件恢复文件时,您经常可以恢复尚未覆盖的文件。文件从表中删除,允许它们占用的空间被列为“可用”,其他文件将写入这些“已删除”文件的顶部。为了节省删除时间,大多数文件系统通常不会清除它们。if
of
您的of=
选项采用文件路径,因此如果您尝试在当前工作的目录中获取输出,pwd
那么of=sdcard-copy.img
就足够了。
话虽如此,您还有另一种选择来保存输出:
您可以使用 gzip 压缩输出来保存它:
dd bs=1M if=/dev/mmcblk0 | gzip -c > sdcard-copy.img.gz
并在恢复阶段对其进行解压缩:
gunzip -c sdcard-copy.img.gz | dd of=/dev/sdb bs=1M
或任何您想要的目标设备(我怀疑sda
)
缺点是压缩/解压比单纯复制要花费一些时间。对于你的情况,如果源大部分是零(听起来确实如此),那么压缩/解压可能相当快。