Tar

我怎樣才能最好地通過 scp 複製大量小文件?

  • March 20, 2022

我有一個目錄,裡面有幾千兆字節和幾千個小文件。我想用 scp 不止一次地通過網路複製它。源機器和目標機器上的 CPU 時間很便宜,但是單獨複製每個文件所增加的網路成本是巨大的。我會將其 tar/gzip 壓縮並運送過來,但源電腦的磁碟不足。

有沒有辦法讓我通過管道輸出tar -czf <output> <directory>到 scp?如果沒有,還有其他簡單的解決方案嗎?我的源機器很古老(SunOS),所以我不想在上面安裝東西。

您可以通過 ssh 會話通過管道傳輸 tar:

$ tar czf - <files> | ssh user@host "cd /wherever && tar xvzf -"

使用 bzip2 壓縮的 tar 應該從網路和 cpu 上減輕盡可能多的負載。

$ tar -C /path/to/src/dir -jcf - ./ | ssh user@server 'tar -C /path/to/dest/dir -jxf -'

不使用-v,因為螢幕輸出可能會減慢程序。但是,如果您想要詳細的輸出,請在 tar ( ) 的本地端使用它-jcvf,而不是在遠端部分。

如果您通過相同的目標路徑重複複製,例如更新備份副本,您最好的選擇是 rsync 和壓縮。

$ rsync -az -e ssh /path/to/src/dir/ user@server:/path/to/dest/dir/

請注意,src 和 dest 路徑都以 / 結尾。同樣,不要故意使用-v-P標誌,如果需要詳細輸出,請添加它們。

引用自:https://unix.stackexchange.com/questions/10026