Ssh
將文件夾存檔到伺服器上,在主機上壓縮
我嘗試執行以下操作:
- 將文件夾(比如Pictures)上傳到伺服器
- 讓伺服器壓縮輸入流並保存到文件
重要的是,步驟 1) 應該是未壓縮的,因為連接速度非常快,我認為客戶端的壓縮會更慢。此外,伺服器沒有足夠的空間來儲存未經壓縮的目錄。理想情況下,伺服器上的壓縮同時發生。
只要它是多執行緒的,我就不太關心實際的壓縮算法。
初步說明:假設您的圖片已經壓縮(JPEG,PNG,WEBP,…),無論您使用什麼壓縮,都沒有什麼可以做的,空間方面。根本沒有熵可以減少了。所以,你的整個計劃在這裡可能會失敗。
一種常用的方法是使用Tape ARchive格式 (.tar)。您可以將目錄序列化為單個 TAR 流,通過 Internet 將其通過管道傳輸(例如使用 SSH)並在目標上壓縮它。
您還想關閉 SSH 的內置傳輸壓縮,否則一開始就在發送主機上不壓縮是沒有意義的。
就像是
tar c Pictures/ | ssh -o "Compression=no" user@server "zstd -15 -T0 > Pictures.tar.zstd"
替換
zstd -T0
(使用盡可能多的 CPU 核心,用於 zstandard 壓縮;這-15
是壓縮級別;15 相當殘酷,-3
比 gzip 更好,但通常更快)為xz -T0
(用於並行 XZip 壓縮)或pigz
(用於並行 gzip 壓縮)為你覺得合適。我推薦 zstd,它具有非常好的壓縮比/速度折衷;xz
速度很慢,而且 gzip 只能產生非常有限的壓縮,並且在相對較低的壓縮設置下並不比 zstd 快。但是請注意,數據加密可能需要比壓縮更多的 CPU,所以問題是為什麼你不只是
zstd -r --stdout Pictures/ | ssh -o "Compression=no" user@server "cat > Pictures.zst"