我想在兩個遠端伺服器之間同步文件。我嘗試遵循@roaima的下一個解決方案:https://unix.stackexchange.com/a/183516/137526,但我需要一個更微妙的解決方案,原因有二:
- 其中一台遠端伺服器具有 ssh 的非預設端口,因此我需要使用 -p 選項指定端口。
- 我可以透過 ssh 連接到兩台伺服器,但我必須使用不同的用戶名,因此必須明確指定。
此外,在引用的解決方案中,不清楚來源主機上的路徑以及目標主機上的路徑,因為兩者都顯示為 /var/www
我嘗試了下一個命令的不同變體,但沒有成功:
ssh -R localhost:50000:username1@dest_host:22 username2@source_host 'rsync -e "ssh -p 50000" -avzt --progress --partial /path/on/source/ localhost:/path/on/destination/'
答案1
你在那裡做的事情至少是「複雜的」。據我了解,您連接到一台伺服器,並告訴它同步到另一台伺服器。
為了方便使用,您可以指定在特定主機的本機 ssh 配置中使用的連接埠和使用者。例如,如果將下列行加入 source_host 上的檔案 ~/.ssh/config (/home/username2/.ssh/config) 中:
machine dest_host
user username1
port 50000
您可以使用下列命令將檔案從 source_host 同步到 dest_host:
ssh username2@source_host 'rsync -e ssh /source/path/on/source_host dest_host:path_below_username1_home
假設,dest_host 的 sshd 偵聽連接埠 50000。
答案2
我發現的優雅的解決方案是使用scp
.
scp -3 -Cp [email protected]:/path/file*.txt [email protected]:/path/
它工作完美。請注意,兩個主機使用兩個不同的使用者名稱。您也可以在檔案名稱中使用通配符,例如*
.