Bash
Tar 通過管道傳輸到拆分管道到 scp
所以我試圖通過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 和傳輸數據;然後在塊大小很重要的接收端進行拆分。