我有一个目录树,我想用 Linux 的“shred”实用程序来粉碎它。不幸的是,shred 没有-R
递归粉碎的选项。
如何递归地粉碎整个目录树?
答案1
使用find
命令递归执行shred -uvz
:
find <dir> -type f -exec shred -uvz {} \;
-u确保粉碎操作完成后,文件未被分配并删除。
-v启用详细输出以跟踪碎片进度
-z对文件执行最终归零以隐藏磁盘上的分配已被粉碎。
还应该注意的是,shred
假设文件系统覆盖磁盘上的数据,不包括日志文件系统(ext3/4、XFS 等)和写时复制文件系统(btrfs、zfs 等)。这意味着粉碎可能无法在您的文件系统的每个文件的基础上工作。
答案2
小心切碎!
来自 shred-manpage:
注意:请注意,shred 依赖于一个非常重要的假设:文件系统会就地覆盖数据。这是传统的处理方式,但许多现代文件系统设计并不满足这个假设。以下是 shred 在所有文件系统模式下无效或不保证有效的文件系统示例:
日志结构或日志文件系统,例如 AIX 和 Solaris 提供的文件系统(以及 JFS、ReiserFS、XFS、Ext3 等)
即使某些写入失败也能写入冗余数据并继续运行的文件系统,例如基于 RAID 的文件系统
制作快照的文件系统,例如 Network Appliance 的 NFS 服务器
在临时位置缓存的文件系统,例如 NFS 版本 3 客户端
压缩文件系统
对于 ext3 文件系统,上述免责声明仅适用于 data=journal 模式(因此粉碎的有效性有限),该模式除了元数据之外还记录文件数据。在 data=ordered(默认)和 data=writeback 模式下,shred 照常工作。可以通过将 data=something 选项添加到 /etc/fstab 文件中特定文件系统的挂载选项来更改 Ext3 日志记录模式,如挂载手册页 (man mount) 中所述。
此外,文件系统备份和远程镜像可能包含无法删除的文件副本,这将允许稍后恢复粉碎的文件。
另外,SSD可能会阻碍您尝试覆盖数据。
解决方案:使用加密的文件系统,然后删除您的文件。
答案3
请改用安全删除。
sudo apt-get install secure-delete
srm -r pathname
完毕。安全删除比粉碎更加偏执,使用 38 遍而不是 3 遍。要进行快速单遍,请使用
srm -rfll pathname
flll 为您提供了一个不太随机的数据生成器,并且只有一次传递。
答案4
find /your/directory -exec shred {} \;