2 つのリモート サーバー間でファイルを rsync したいです。@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
あなたがそこでやっていることは、少なくとも「複雑」です。私が理解している限りでは、1 つのサーバーに接続し、別のサーバーに同期するように指示するということです。
使いやすさのために、特定のホストのローカル SSH 構成で使用するポートとユーザーを指定できます。たとえば、source_host のファイル ~/.ssh/config (/home/username2/.ssh/config) に次の行を追加します。
machine dest_host
user username1
port 50000
次のようにして、source_host から dest_host にファイルを rsync することができます。
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 つの異なるユーザー名を使用していることに注意してください。ファイル名にワイルドカードを使用することもできます (例: *
.