Tar
我怎樣才能最好地通過 scp 複製大量小文件?
我有一個目錄,裡面有幾千兆字節和幾千個小文件。我想用 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
標誌,如果需要詳細輸出,請添加它們。