Linux
儲存受限時的文件加密
假設:在 Linux 伺服器上,我們的可用空間有限。任務是創建文件夾的存檔(例如 /var/www),對其進行加密並上傳到遠端位置,以保持原始未加密文件的位置。對於相對較小的文件,一切正常,但是一旦存檔文件的大小超過可用空間的 50%,就沒有足夠的空間來放置加密文件。上傳是通過提供者的 SDK 完成的,並且無法將 gpg-agent 的輸出直接通過管道傳輸到上傳。以上都是通過自己編寫的 bash 腳本完成的。
因此逐步採取行動(帶有範例編號):
- (例如)/opt/ 中的免費儲存空間為 100GB
- 將 /var/www 壓縮為 /opt/www.tar.gz(文件大小為 60GB)
- 以某種方式生成 /opt/www.tar.gz.gpg 文件(它需要 60GB 或更多)
- 使用 CLI 工具上傳 /opt/www.tar.gz.gpg
- 完成上述所有操作後,應該留下文件 /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