Linux
帶有 -C 標誌的 scp 不執行壓縮
scp
手冊頁顯示該標誌-C
可用於在執行遠端複製時動態壓縮文件 -$ man scp | grep "\-C" -C Compression enable. Passes the -C flag to ssh(1) to enable compression.
但是,當我
scp
使用和不使用標誌執行時,文件大小保持不變 -沒有標誌:
$ scp root@remote-host:/path/to/file/* . Password: core_dump 100% 7832MB 110.6MB/s 01:10 $ ls -lh total 7.7G -rw------- 1 user group 7.7G Jan 4 16:19 core_dump
使用壓縮標誌:
$ scp -C root@remote-host:/path/to/file/* . Password: core_dump 100% 7832MB 69.8MB/s 01:52 $ ls -lh total 7.7G -rw------- 1 user group 7.7G Jan 4 16:21 core_dump
我嘗試了其他幾個選項,但都產生相同的結果:
$ scp -o Compression=yes root@remote-host:/path/to/file/* . $ scp -C -o Compression=yes root@remote-host:/path/to/file/* . $ scp -C -o Compression=yes -o CompressionLevel=9 root@remote-host:/path/to/file/* .
有什麼我在這裡想念的嗎?
ssh -C
是對線路上動態數據的壓縮,而不是靜態數據。換句話說,ssh在傳輸層壓縮和解壓。使用 ssh 和管道,可以在遠端主機上進行壓縮,將壓縮流作為標準輸入,然後在本地主機上寫出。它壓縮運動和靜止的數據。
ssh root@remote-host "zstd /path/to/file/core_dump --stdout" > core_dump.zst
引號很重要,表示遠端命令。替換
zstd
為gzip
或xz
為您想要的壓縮格式。也可以通過 ssh 傳輸 tar 檔案,這裡不需要單個文件。