web-dev-qa-db-ja.com

GPGで暗号化した後、元のファイルを自動的に削除するにはどうすればよいですか?

たくさんのファイルとサブフォルダーがあるフォルダーでGPGを使用する必要があります。そのために「find」+「gpg」を使用でき、すべてのファイルを暗号化できますが、暗号化が成功した後、GPGが元のファイルを削除しないという問題があります。

GPGが適切に暗号化した後、元のファイルを削除するための最良かつ最も安全な方法は何ですか?ファイルを時期尚早に削除したくないし、暗号化されていないファイル(GPG操作のエラー、許可などの問題のため)を不適切に削除したくない。

ありがとう

5
yarun can

shredファイルを安全に削除するための武器のように聞こえますが、ファイルシステムの制限については以下を参照してください。

また、ターミナルを使用している場合は、bash/shスクリプトが役立つ場合があります。 1行のエラーチェックを使用したい場合は?正しく暗号化されている場合はファイルを移動し、暗号化されていない場合はメッセージを出力するには、このようにしますか?

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
}

その後、todel-folder内のファイルを安全に削除/ワイプ/ shredするか、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

注意:シュレッドは非常に重要な仮定に依存していることに注意してください。ファイルシステムがその場でデータを上書きするということです。これは物事を行うための伝統的な方法ですが、多くの最新のファイルシステム設計はこの仮定を満たしていません。以下は、シュレッドが有効でない、またはすべてのファイルシステムモードで有効であることが保証されていないファイルシステムの例です。

  • aIXおよびSolaris(およびJFS、ReiserFS、XFS、Ext3など)で提供されるものなど、ログ構造化またはジャーナル化されたファイルシステム

  • rAIDベースのファイルシステムなど、冗長データを書き込み、一部の書き込みが失敗しても続行するファイルシステム

  • ネットワークアプライアンスのNFSサーバーなど、スナップショットを作成するファイルシステム

  • nFSバージョン3クライアントなど、一時的な場所にキャッシュするファイルシステム

  • 圧縮ファイルシステム

Ext3ファイルシステムの場合、上記の免責事項は、メタデータだけでなくファイルデータをジャーナルするdata = journalモードでのみ適用されます(したがって、シュレッドの効果は限られています)。 data = ordered(デフォルト)モードとdata = writebackモードの両方で、シュレッドは通常どおり機能します。 Ext3ジャーナリングモードは、data = somethingオプションを特定のファイルシステムのマウントオプションに追加することで変更できます。
/etc/fstabファイル。mountのmanページ(man mount)に記載されています。

4
Xen2050