如何递归地粉碎整个目录树?

如何递归地粉碎整个目录树?

我有一个目录树,我想用 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 {} \;

相关内容