该wipe
工具有选项-k Keep files, i.e. do not remove() them after overwriting
。
不删除被……嗯……擦除的文件是什么意思?
答案1
这联机帮助页如此描述-k
:
保留文件:文件被覆盖后不要取消链接。如果您想擦除设备,同时保留设备特殊文件,则非常有用。这意味着
-F
。
主要用例-k
是
wipe -k /dev/sda
这将覆盖驱动器的所有内容,而不删除设备节点。
如果您在“标准”文件上使用它,它将擦除文件的内容,但保留文件本身(其名称及其在父目录中的存在)。
答案2
类似的程序wipe
和shred
旨在使用与任何其他程序相同的接口来覆盖文件数据工作。他们使用通常的操作系统功能将例如零写入文件,并希望文件系统将新数据存储在与旧数据相同的磁盘块上,从而覆盖旧数据。他们没有任何特殊方法来销毁数据或使文件无法访问,除了通过unlink()
.
因此,文件被覆盖后保留只是文件保留,而不是删除。只是内容发生了变化。
一个示例shred
,默认情况下不会取消链接文件:
$ cat somefile
some secret data
$ shred somefile
$ ls -l somefile
-rw-r--r-- 1 username username 4096 Jun 27 19:28 somefile
$ od -tx1 somefile |head -2
0000000 2b d7 fe 76 a0 4c 79 4e b6 bc 26 7d 6c b0 4e ed
0000020 81 a2 bf 3f ce af ce f0 07 2b fe 80 50 39 e3 c9
之后shred
,文件仍然充满随机字节。该文件不会被截断或删除。它的大小实际上已经增加了,因为shred
在覆盖时将文件大小向上舍入(以完全覆盖最后一个数据块)。
当然我们可以使用 删除该文件rm somefile
。
请注意,覆盖所依赖的假设甚至可能不适用于所有文件系统。至少文件数据的日志记录(在 ext4 上可能)和写时复制文件系统 (btrfs) 本质上会存储数据的多个副本,从而使覆盖变得无效。