Backup

如何將所有空閒塊(已刪除文件)完全歸零

  • May 23, 2020

我正在備份 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
...

這個命令會這樣做嗎?

它缺少=之後if,但除此之外:是的。我不知道這是否是實現它的最有效方法,但它會工作。

雖然我推薦這樣的 dd-only 變體:

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

不需要pv

對於完整的根文件系統備份,我建議使用以下方式進行離線備份e2image:關閉 pi,將卡移動到 PC,不要掛載根分區。相反,使用 縮小它resize2fs -M,使用 創建一個副本r2image -rap,然後使用 再次展開它resize2fs

使用partclone可能會更好,但我沒有第一手經驗。

引用自:https://unix.stackexchange.com/questions/588527