📜  删除自动清除 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:22:44.225000             🧑  作者: Mango

删除自动清除 - Shell-Bash

在 Shell-Bash 中,我们经常需要对文件或文件夹进行删除操作,这个过程本身并不是很复杂。但有时候我们希望在删除过程中避免出现特别麻烦的事情,比如说不小心删除了一些重要的文件而无法恢复等等。所以,这里介绍一种在删除时自动清除垃圾的方法。

原理

我们首先需要知道一个关于删除操作的基础知识:在 Linux 系统中,删除一个文件或文件夹并不等于它被永久删除了。实际上,被删除的文件只是在文件系统中被标记为“已删除”,但文件数据仍然存在硬盘上,只是在操作系统看来被视为“空闲”的存储空间。这就是为什么有些人可以利用一些数据恢复软件来恢复他们的文件,因为实际上这些文件还存在于硬盘上。

于是我们的思路就非常简单了:在删除文件时,将原本的文件内容覆盖成一些无用的数据,以此来确保文件数据无法被“恢复”。

实现

具体的实现方式有多种,这里只介绍一种较为简单的方法:使用 dd 命令。

dd 命令是 Linux 系统中一个强大的工具,可以用来对二进制文件进行操作。我们只需要将删除文件的命令替换为一个先清除文件内容再删除文件的命令就行了。

#!/bin/bash
shred -z -u $1

这里的 shred 命令会将指定文件的数据覆盖为随机数据,并进行多次覆盖,以确保文件无法被恢复。其中的 -z 参数会在最后一次覆盖时将文件内容清空,-u 参数会在完成覆盖后将文件删除。

使用

将上述代码保存到一个名为“safe-rm”的 shell 脚本中,并把脚本放到你的 $PATH 变量中,就完成了。之后,我们只需要将脚本名字和文件名一起作为参数执行即可。

safe-rm file.txt
结论

这种方法的缺点是需要消耗一定的时间来进行多次覆盖,所以如果你需要快速地删除一些文件,那么这种方法可能并不适合。但如果你需要删除一些敏感数据,或者需要确保被删除的文件无法被恢复,那么这种方法是非常值得使用的。