Linux

儲存受限時的文件加密

  • September 11, 2015

假設:在 Linux 伺服器上,我們的可用空間有限。任務是創建文件夾的存檔(例如 /var/www),對其進行加密並上傳到遠端位置,以保持原始未加密文件的位置。對於相對較小的文件,一切正常,但是一旦存檔文件的大小超過可用空間的 50%,就沒有足夠的空間來放置加密文件。上傳是通過提供者的 SDK 完成的,並且無法將 gpg-agent 的輸出直接通過管道傳輸到上傳。以上都是通過自己編寫的 bash 腳本完成的。

因此逐步採取行動(帶有範例編號):

  1. (例如)/opt/ 中的免費儲存空間為 100GB
  2. 將 /var/www 壓縮為 /opt/www.tar.gz(文件大小為 60GB)
  3. 以某種方式生成 /opt/www.tar.gz.gpg 文件(它需要 60GB 或更多)
  4. 使用 CLI 工具上傳 /opt/www.tar.gz.gpg
  5. 完成上述所有操作後,應該留下文件 /opt/www.tar.gz

這個問題有解決方案嗎?

如果您可以暫時停止伺服器更改 /var/www,則可以通過管道創建 gpg:

tar cf - /var/www | gpg -e >/opt/www.tar.gz.gpg 
upload /opt/www.tar.gz.gpg
rm /opt/www.tar.gz.gpg 

然後創建本地副本

tar zcf /opt/www.tar.gz /var/www

無論如何,獲取實時系統的 tar 並不完美,所以為什麼不接受 2 個略有不同的快照。


這是另一種將 gpg 上傳拆分為單獨的較小文件的解決方案。然後,如果您希望利用它們,您可以在伺服器上連接它們。bs將and更改count為略小於您可用的可用空間,或任何方便的更小尺寸。

tar zcf /opt/www.tar.gz /var/www
gpg -e </opt/www.tar.gz |
( let i=1
 while dd iflag=fullblock bs=10240 count=100 >/opt/part.$i
       [ -s /opt/part.$i ]
 do   echo upload /opt/part.$i
      rm /opt/part.$i
      let i=i+1
 done
)

我對此進行瞭如下測試並檢查了結果是否正常:

tar czf /tmp/tar.gz ~/bin/
>/tmp/b
gpg --compress-level=0 -e </tmp/tar.gz |
( let i=1
 while dd iflag=fullblock bs=10240 count=100 >/tmp/a$i
       [ -s /tmp/a$i ]
 do   echo upload /tmp/a$i
      cat /tmp/a$i >>/tmp/b
      rm /tmp/a$i
      let i=i+1
 done
)
gpg -d </tmp/b >/tmp/c
cmp /tmp/c /tmp/tar.gz 

引用自:https://serverfault.com/questions/721129