Bash

Tar 通過管道傳輸到拆分管道到 scp

  • February 8, 2013

所以我試圖通過SCP傳輸一堆文件。其中一些文件太大而無法儲存在收件人上(Android 手機,文件大小限制為 4GB)。

發件人空間快用完了,所以我無法在本地創建中間文件。

我想將一堆壓縮包並通過拆分流式傳輸,以便我可以獲得電話可以接受的較小片段,即本地命令:

tar -cvf - ~/batch/ | split --bytes=1024m - batch.tar.seg

但是我不確定如何將其通過管道傳輸到 scp 以獲取電話。根據對這篇文章的評論,這是可能的,但首先我不太明白他在說什麼,其次我不確定如何做到這一點,因為拆分會輸出多個文件。

有任何想法嗎?

如果收件人有split,那麼你可以這樣做:

tar -cvf - ~/batch/ | gzip |
 ssh recipient 'cd /destination &&
   split --bytes=1024m - batch.tar.gz.seg'

雖然您提到的評論確實指的是從 STDIN 讀取的 scp 和 ssh ,但這並不完全是您的情況。原因是split:它不寫入 STDOUT。因此,即使添加更多管道,也不會在那裡獲取數據。Stephane 在上面的回答中提出了正確的建議:不要在源上儲存任何東西,因為它沒有可用空間,只需打包、gzip 和傳輸數據;然後在塊大小很重要的接收端進行拆分。

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