Ste*_* V. 56 security rm data-destruction
我有一个目录树,我想用 Linux 'shred' 实用程序对其进行粉碎。不幸的是,shred 没有-R递归粉碎的选项。
如何递归地粉碎整个目录树?
jam*_*man 55
使用find命令shred递归执行:
find <dir> -type f -exec shred {} \;
Run Code Online (Sandbox Code Playgroud)
use*_*own 31
小心碎!
从切碎联机帮助页:
注意:请注意,shred 依赖于一个非常重要的假设:文件系统将数据覆盖到位。这是传统的做事方式,但许多现代文件系统设计并不满足这一假设。以下是 shred 在其上无效或不保证在所有文件系统模式下都有效的文件系统示例:
日志结构或日志文件系统,例如随 AIX 和 Solaris(以及 JFS、ReiserFS、XFS、Ext3 等)提供的文件系统
写入冗余数据并在某些写入失败时继续执行的文件系统,例如基于 RAID 的文件系统
制作快照的文件系统,例如 Network Appliance 的 NFS 服务器
缓存在临时位置的文件系统,例如 NFS 版本 3 客户端
压缩文件系统
在 ext3 文件系统的情况下,上述免责声明仅在 data=journal 模式下适用(因此 shred 的有效性有限),该模式除了元数据之外还记录文件数据。在 data=ordered(默认)和 data=writeback 模式下,shred 照常工作。可以通过将 data=something 选项添加到 /etc/fstab 文件中特定文件系统的挂载选项来更改 Ext3 日志模式,如挂载手册页 (man mount) 中所述。
此外,文件系统备份和远程镜像可能包含无法删除的文件副本,这将允许以后恢复粉碎的文件。
此外,SSD可能会阻止您覆盖数据的尝试。
解决方案:使用加密的文件系统,然后删除您的文件。
Coo*_*kie 23
请改用安全删除。
sudo apt-get install secure-delete
srm -r pathname
Run Code Online (Sandbox Code Playgroud)
完毕。安全删除比 shred 更偏执,使用 38 次而不是 3 次。要进行快速单次传递,请使用
srm -rfll pathname
Run Code Online (Sandbox Code Playgroud)
fll 为您提供了一个不太随机的数据生成器,并且只有一次通过。
小智 12
将此答案与使用此堆栈溢出链接“在 CentOS 上永久安全地删除文件”的最知名选项相结合:
find <directory> -depth -type f -exec shred -v -n 1 -z -u {} \;
Run Code Online (Sandbox Code Playgroud)
编辑:请注意,粉碎单个文件的最佳答案会强制同步,在删除文件之前将更改写入媒体,因为某些或所有日志文件系统具有缓冲区。
如果可能, find 命令应该在运行的文件上调用 shell 脚本:
shred -v -n 1 /path/to/your/file #overwriting with random data
sync #forcing a sync of the buffers to the disk
shred -v -n 0 -z -u /path/to/your/file #overwriting with zeroes and remove the file
Run Code Online (Sandbox Code Playgroud)
在每个文件上。
find [dirname] -depth -type f -exec shred -n1 {} \;
Run Code Online (Sandbox Code Playgroud)
这将对目录 [dirname] 中的文件执行深度优先搜索,然后shred -n1对每个文件运行该命令。删除文件和/或目录时,添加-depth为默认值是一个好习惯,尽管在这种情况下并不是严格需要的。rm -rf当使用而不是运行此类命令时shred,-depth需要确保在尝试删除目录内容之前不会删除目录(从而导致错误)。