我在 Mint 安装中有一个目录,我想将其清除干净(不只是删除指针,而是真正将驱动器上的信息清零)。是否可以使用 清除数据dd
?例如,如果我想删除的文件位于/folder/folder1/*
,我可以执行dd if=/dev/zero of=/folder/folder1 bs=1k
并让该命令将该目录中的所有文件清零吗?此外,如果我有子目录,它是否也可以递归地将所有子文件夹清零?
答案1
您可以一起使用 find 和 dd 来以递归方式一次写入一个文件:
find /folder/folder1 -type f | while read line; do dd if=/dev/zero of=$line bs=1k count=1024; done
然后您只需 rm -rf 父目录即可:
rm -rf /folder/folder1
这绝对不是一个快速的过程,但它能完成工作。当然,有比使用 dd 更好的工具可以完成这项工作。
答案2
您不能将其dd
用于文件夹,它用于分区或文件等设备。如果是 Ubuntu,则应安装shred
,它是为您想要执行的操作而设计的。
Shred 仅对文件起作用,因此您需要执行以下操作:
find /folder -type f -print0 | xargs -0 shred
您shred
也可以在分区上使用。
如果您不是使用 Ubuntu,还有许多其他工具,shred
也可能适用于其他发行版。
您也可以通过 Google 搜索“在 Linux 中安全删除文件”或类似内容,以找到更多可能更适合您需求的工具。
答案3
不,你不能使用 dd 来安全地删除目录,但你可以使用wipe
。
反复擦除要销毁的文件,并使用 fsync() 调用和/或 O_SYNC 位强制访问磁盘
答案4
我使用srm
,它在secure-delete
Ubuntu 和 Debian 的包中。sudo apt-get install secure-delete
安装它,然后srm -r $directory
安全地删除整个目录树。srm
不会覆盖非常规文件,但它会(默认情况下)在取消链接之前将所有文件和目录重命名为随机值。
您可以使用该-z
标志让它在最后一次传递时写入零并-v
查看其进度。man srm
有关更多信息,请参阅。