2つのリモートサーバー間でファイルを同期したいと思います。 @roaimaの次の解決策を試してみました。https://unix.stackexchange.com/a/183516/137526しかし、次の2つの理由でもう少し微妙な解決策が必要です。
- リモートサーバーの1つに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でリッスンしているとします。 rsync の "-r"/"-u" オプションを調べることもできます。
答え2
私が見つけたエレガントな解決策はscp
。
scp -3 -Cp [email protected]:/path/file*.txt [email protected]:/path/
完璧に動作します。 2 つのホストは 2 つの異なるユーザー名を使用します。などのファイル名にワイルドカード文字を使用することもできます*
。