如何在具有明確連接埠和不同使用者名稱的兩個遙控器之間 rsync 檔案?

如何在具有明確連接埠和不同使用者名稱的兩個遙控器之間 rsync 檔案?

我想在兩個遠端伺服器之間同步文件。我嘗試遵循@roaima的下一個解決方案:https://unix.stackexchange.com/a/183516/137526,但我需要一個更微妙的解決方案,原因有二:

  1. 其中一台遠端伺服器具有 ssh 的非預設端口,因此我需要使用 -p 選項指定端口。
  2. 我可以透過 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/

它工作完美。請注意,兩個主機使用兩個不同的使用者名稱。您也可以在檔案名稱中使用通配符,例如*.

相關內容