明示的なポートと異なるユーザー名を使用して2つのリモートデバイス間でファイルを再同期する方法は?

明示的なポートと異なるユーザー名を使用して2つのリモートデバイス間でファイルを再同期する方法は?

2つのリモートサーバー間でファイルを同期したいと思います。 @roaimaの次の解決策を試してみました。https://unix.stackexchange.com/a/183516/137526しかし、次の2つの理由でもう少し微妙な解決策が必要です。

  1. リモートサーバーの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でリッスンしているとします。 rsync の "-r"/"-u" オプションを調べることもできます。

おすすめ記事