Linux
使用 scp 將文件複製並複製到遠端主機
我正在使用以下內容將文件複製到遠端主機
scp
,然後將該文件複製到遠端主機上以創建額外的帶日期戳的版本:scp myfile.tar.gz username@xx.xxx.xx.xxx:/root/myfolder ssh username@xx.xxx.xx.xxx "cd /root/myfolder && cp myfile.tar.gz myfile_2020-06-23.tar.gz"
但是有沒有一種方法可以一步完成,而不需要額外的遠端複製(對於大文件,這需要一些時間)?我正在考慮在管道到
ssh
和使用時可以做什麼,cat - | tee
如下所示:... | ssh username@xx.xxx.xx.xxx "cat - | tee myfile.tar.gz > myfile_2020-06-23.tar.gz"
我想表達這個問題的另一種方式是……我如何通過管道將
.tar.gz
文件傳輸到遠端主機ssh
?這樣,我可以通過管道myfile.tar.gz
傳輸ssh
並使用上述技巧同時寫入兩個文件,而不是使用scp
and thencp
。
假設遠端伺服器接受典型的 unix 命令,您可以這樣做:
cat myfile.tar.gz | ssh username@xx.xxx.xx.xxx \ "cd /root/myfolder && tee myfile.tar.gz > myfile_2020-06-23.tar.gz"
cat
不需要在遠端伺服器上執行。在本地伺服器上執行cat
也不是必需的——你可以這樣做:ssh username@xx.xxx.xx.xxx \ "cd /root/myfolder && tee myfile.tar.gz > myfile_2020-06-23.tar.gz" \ < myfile.tar.gz ^^^^^^^^^^^^^^^-- Redirect from the file
如果你願意,你甚至可以通過管道輸出
tar
into :ssh
tar czf - myfiles | ssh username@xx.xxx.xx.xxx \ "cd /root/myfolder && tee myfile.tar.gz > myfile_2020-06-23.tar.gz"