GPG暗号化の並列段階的除去

GPG暗号化の並列段階的除去

120GBのハードドライブメモリと少量のRAMを持つシステムでGPG暗号化したい100GBファイルがあるとします。

外部ストレージを使用せずにファイルを復号化する方法(例:gpgでファイルを暗号化し、暗号化されていないバージョンを並行して徐々に削除しますか?

答え1

注:ファイルの一部が削除され、プロセスが途中で中断されるとどうなりますか?

ディスク容量は安いので、このように保存しようとしてもほとんど意味がありません。

これを行う必要がある場合は、ファイルを塊として扱うようにアドバイスがあります。ブロックをインポートして暗号化し、元のファイルの対応する部分を削除します。その後、次のブロックなどを処理します。これにより、プロセスが中断された場合に未完了の暗号化ブロックを削除してプロセスを再開できます。これにより、ファイルを最初から最後まで処理するのが簡単になります。

警告:テストされていないコードです。 GNUまたはBusyBoxユーティリティ(Linuxなど)と64ビットシェル(2 GB以上のファイルサイズの処理)を使用するとします。

#!/bin/sh
set -e
input_size=$(stat -c %s myfile)
fragment_size=$((1024*1024*1024))
while [ "$input_size" -gt 0 ]; do
  chunk_size=$((input_size % fragment_size)) || chunk_size=$fragment_size
  input_size=$((input_size - fragment_size))
  fragment_name=$(printf fragment-%08d "$((input_size / fragment_size))")
  tail -c "$((input_size+1))" myfile | gpg -e >"$fragment_name.gpg.tmp"
  mv "$fragment_name.gpg.tmp" "$fragment_name.gpg"
  truncate -s "$input_size" myfile
done

関連情報