如何使用GPG加密后自动删除原始文件?

如何使用GPG加密后自动删除原始文件?

我需要对包含大量文件和子文件夹的文件夹使用 GPG。我可以使用“find”+“gpg”来加密所有文件,但我的问题是 GPG 在成功加密后不会删除原始文件。

GPG 正确加密后,删除原始文件的最佳和最安全的方法是什么?我不想过早删除我的文件,也不想不正确地删除未加密的文件(由于 GPG 操作的错误、权限等问题)。

谢谢

答案1

shred听起来像是您选择的武器,用于安全删除文件,但请参阅下面的文件系统限制。

如果您使用终端,一些 bash/sh 脚本可能会很有用。如果您想使用一行错误检查?像这样,如果文件加密正确,则移动文件,如果文件加密不正确,则打印一条消息?

gpg --encrypt <options> "$file" && mv "$file" todel-folder || echo "Error, $file did not encrypt"

或者,您可以使用一些花括号将一些多行“如果成功”和“如果失败”项放在一起进行记录:

gpg --encrypt <options> "$file" && {
  echo "gpg on $file successful" >> logfile
  mv "$file" todel-folder
  } || {
  echo "Error, $file did not encrypt" >> logfile
}

然后,您可以安全地删除/擦除/shred中的文件todel-folder,或者立即粉碎它们,而不是使用mv

gpg --encrypt <options> "$file" && {
    echo "gpg on $file successful" >> logfile
    shred "$file" && { 
        echo "shred on $file successful" >> logfile
        } ||  {
        echo "shred on $file successful" >> logfile
        }
    } || {
    echo "Error, $file did not encrypt" >> logfile
}

man shred参阅一些选项和警告:

shred - overwrite a file to hide its contents, and optionally delete it

警告:请注意,Shred 依赖于一个非常重要的假设:文件系统会就地覆盖数据。这是传统的处理方式,但许多现代文件系统设计并不满足这一假设。以下是 Shred 无效或不能保证在所有文件系统模式下都有效的文件系统示例:

  • 日志结构或日志文件系统,例如 AIX 和 Solaris 提供的系统(以及 JFS、ReiserFS、XFS、Ext3 等)

  • 写入冗余数据并即使某些写入失败也能继续运行的文件系统,例如基于 RAID 的文件系统

  • 制作快照的文件系统,例如 Network Appliance 的 NFS 服务器

  • 在临时位置缓存的文件系统,例如 NFS 版本 3 客户端

  • 压缩文件系统

对于 ext3 文件系统,上述免责声明仅适用于 data=journal 模式(因此 shred 的效果有限),该模式除了记录元数据外,还记录文件数据。在 data=ordered(默认)和 data=writeback 模式下,shred 均可正常工作。可以通过在
/etc/fstab 文件中为特定文件系统的挂载选项添加 data=something 选项来更改 ext3 日志模式,如挂载手册页(man mount)中所述。

相关内容