我有一個服務器「B」,它可以將SCP文件傳入/傳出服務器「A」,也可以將SCP文件傳入/傳出服務器「C」。從遠程服務器到另一個遠程服務器的SCP
即 甲< ----->乙< ----->Ç
服務器 「A」 和服務器 「C」 不能達到彼此。只有服務器B可以同時到達。 我想將文件從A傳輸到C,而不在服務器B上存儲(或最小)存儲。
有沒有將文件從A文件傳輸到C文件而無需將文件存儲在B文件或最小步驟的方法?
謝謝。
我有一個服務器「B」,它可以將SCP文件傳入/傳出服務器「A」,也可以將SCP文件傳入/傳出服務器「C」。從遠程服務器到另一個遠程服務器的SCP
即 甲< ----->乙< ----->Ç
服務器 「A」 和服務器 「C」 不能達到彼此。只有服務器B可以同時到達。 我想將文件從A傳輸到C,而不在服務器B上存儲(或最小)存儲。
有沒有將文件從A文件傳輸到C文件而無需將文件存儲在B文件或最小步驟的方法?
謝謝。
,如果你喜歡,你可以做到這一點沒有SCP。登錄到機器「B」和運行這個:
ssh [email protected] 'cat /source/file' | ssh [email protected] 'cat > /dest/file'
您應該建立一個或兩個ssh的實例,爲login的關鍵,讓你不通過在兩個SSH實例提示輸入密碼同時。
如果你想在文件拷貝過程中要多一點錯誤校對,或者如果你想一次傳輸多個文件,你可以使用tar
:
ssh [email protected] 'cd /source/dir && tar cf - file1 file2...' |
ssh [email protected] 'cd /dest/dir && tar xvf -'
如果你願意而運行從A命令,那麼這樣的事情應該工作:
tar cf - file... | ssh [email protected] 'ssh [email protected] "cd /dest/dir && tar xvf -" '
你可以用隧道做到這一點:
# Open a tunnel to server C
$ ssh -L 2222:<server C>:22 -N -l user <server B> &
# Copy the file to server C
$ scp <file> -P 2222 localhost:<remote filename>
注意,隧道步驟2
後仍在運行從scp(1)
:
說明
...兩臺遠程主機 之間的副本也是允許的。
scp host1:foo.txt host2:foo.txt
試過這個,但我認爲我們的服務器有一些配置停止它。 – Steven 2014-09-25 05:57:13
您可能正在運行不支持它的舊版本。 – 2014-09-25 05:58:16
題外話,但在這裏你去:http://blog.sensible.io/2014/05/17/ssh-tunnel-local-和遠程端口轉發解釋與examples.html – 2014-09-24 00:19:37