如何知道sfill free space擦除过程的进度?

Eka*_*Eka 6 disk-usage 14.04 secure-erase

我想擦除我的 ubuntu 分区中的可用空间,搜索后发现我使用安装的这个sfill软件

sudo apt 安装安全删除

然后我用这个命令来擦除可用空间

$ sudo sfill -v /home
[sudo] password for shan: 
Using /dev/urandom for random input.
Wipe mode is secure (38 special passes)
Wiping now ...
Creating /home/oooooooo.ooo ... 
Run Code Online (Sandbox Code Playgroud)

它在最后 20 分钟卡在这里,我不知道sfill是否有效。在我的/home分区中,oooooooo.ooo文件的大小为 27.6 MB,并保持在这个大小。如何知道sfill中空闲空间的擦除进度?

sud*_*dus 4

zerofreesfill

我认为普通人的所有需求覆盖一次(并且用零)就足够了。你可以这样做zerofree

sudo apt install zerofree

sudo zerofree /dev/sdxn
Run Code Online (Sandbox Code Playgroud)

其中 x 是设备字母,n 是分区号(可能对于媒体设备sdb1)。

使用sfill“擦除模式是安全的(38 个特殊通道)”运行需要 38 倍的时间,并且会使驱动器磨损 38 倍。而且很可能是浪费时间

您可以使用选项使其更快但(可能)安全性较低。如果我正确理解了手册,sfill应该像zerofree使用以下选项一样工作(但我没有测试过)。

sudo sfill -llz /path-to-mountpoint
Run Code Online (Sandbox Code Playgroud)

或者也许它们必须是分开的

sudo sfill -l -l -z /path-to-mountpoint
Run Code Online (Sandbox Code Playgroud)

但你不妨让它写入随机数据一次

sudo sfill -l -l /path-to-mountpoint
Run Code Online (Sandbox Code Playgroud)

我不知道在做同样的事情时是否更有效(更快)zerofreesfill(我不需要在这里猜测,但如果你知道,请编辑这个答案。)

根据@bodhi.zazen 的评论

数据被覆盖多次后无法恢复

因此以下命令sfill可能是一个不错的选择(它会覆盖两次),

sudo sfill -l /path-to-mountpoint
Run Code Online (Sandbox Code Playgroud)

man sfill描述该选项-l

-l降低了安全性。仅写入两遍:一种模式为 0xff,最后一种模式为随机值。

低水平擦拭

如果您确实需要这种高级别的安全性,最好将数据备份或克隆到另一个驱动器,并使用在较低级别上工作的特殊工具(例如DBANhdparm或DBAN )擦除驱动器。它将更加高效(更快)。

可以使用逻辑地址和物理内存单元之间的重新链接hdparm。这是一种加密而不是覆盖整个内存并且非常高效。我认为以下链接可以帮助您使用该方法,

回复:擦除驱动器的最佳方法 - 使用 hdparm

低级擦除后,您可以将文件数据恢复到已擦除的驱动器,也可以简单地在其他驱动器上使用它(如果使用Clonezilla进行克隆,它会克隆已使用的数据块并跳过空闲块)。

如何知道进展情况或至少知道某些事情正在发生

有一个详细模式选项,-v. 我看到你已经用过它了。我不知道有任何其他方法可以告诉sfill您更多信息,而且您似乎无法获得进度视图。

但如果你想知道进程是否仍在做某事,你可以尝试iotop

sudo apt install iotop

sudo iotop -o
Run Code Online (Sandbox Code Playgroud)

  • 如果数据被覆盖多次,则无法恢复 - Peter Gutmann 在 1996 年 Usenix 会议上提出的理论已被揭穿 - 请参阅 http://www.nber.org/sys-admin/overwriting-data-guttman.html 和https://www.stellarinfo.com/blog/why-it-is-impossible-to-recover-data-from-an-overwriting-hard-drive/ 。请注意第二篇文章中删除、垃圾、重新格式化和覆盖之间的区别。使用 DBAN 或类似程序来执行多次传递的建议很差,因为它会导致设备不必要的磨损并且需要更长的时间。 (4认同)

Eka*_*Eka 3

我没有找到任何方法来直接监视 sfill 的进度,但我自己找到了一种间接的方法来做到这一点。这个过程对我来说花了很多个小时,我建议在 中使用小覆盖通行证sfill

打开两个终端,在第一个终端启动sfill

  #wiping free space in root drive
  sudo sfill -v /
Run Code Online (Sandbox Code Playgroud)

现在在第二个终端中执行这些命令

  cd / #move to root direcotry where oooooooo.ooo exists
  watch -n 30 "ls -lah|grep 'ooo'&&df -h|grep 'sdxn'"
Run Code Online (Sandbox Code Playgroud)

watch -n 30命令允许您在特定的时间间隔(此处为 30 秒)内监视特定的 shell 命令ls -lah|grep 'ooo'oooooooo.ooo监视df -h|grep 'sdxn'根驱动器中剩余的大小xn,即分区号。当填充进度时,我们可以看到驱动器大小逐渐减小,当可用空间达到零时,停止该过程。