如何将所有空闲块(已删除的文件)完全归零

如何将所有空闲块(已删除的文件)完全归零

我正在备份 Raspbian(我知道,这不是 Raspberry Pi SE,但这是一个 Linux 问题,可能不仅仅是 Raspbian 有这个问题,顺便说一句,驱动器的大小是 128GB)。第一次备份压缩后只有68GB。然后,我删除了第一个备份。下一个备份的大小超过 100GB!如果我删除第二个备份并执行另一个备份,则在进行备份时我会用完空间(因为我使用了sudo dd if=/dev/mmcblk0 bs=1M | gzip – | dd of=~/Desktop/backup-23-may-2020.gz并且未使用的空间不全为零,所以压缩会变得更糟)

据我所知,删除文件rm只是将文件标记为已删除,而不是将文件清零。我希望能够将所有已删除的文件完全清零,因此当我备份整个磁盘时,压缩效果更好,因为所有未使用的空间都为零。

这个命令会这样做吗? (pv如果您想通过运行来尝试此命令,则需要安装(管道查看器) sudo apt install pv

dd if=/dev/zero | pv -s 100g -S | dd of=~/zeros.txt

编辑2:忘记了=。谢谢@赫尔曼。

我不想盲目执行这个命令,因为我确实在这里编译了 OpenCV,并且我拒绝再次这样做。

编辑:df -h我说我有102G内存。

pi@raspberrypi:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       115G  7.9G  102G   8% /
devtmpfs        1.6G     0  1.6G   0% /dev
tmpfs           1.7G     0  1.7G   0% /dev/shm
tmpfs           1.7G   26M  1.7G   2% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
...

答案1

这个命令会这样做吗?

=后面缺少if,但除此之外: 是的。我不知道这是否是实现这一目标的最有效方法,但它会完成工作。

虽然我推荐像这样的仅 dd 变体:

dd if=/dev/zero of=~/zeros.txt bs=16M status=progress

不需要pv

对于完整的根文件系统备份,我建议使用离线备份e2image:关闭 pi,将卡移至 PC,然后执行不是挂载根分区。相反,请使用 缩小它resize2fs -M,使用 来创建副本r2image -rap,然后使用 再次展开它resize2fs

使用partclone可能会更好,但我没有第一手的经验。

相关内容