rsyncはソースホストがコマンドだと思います

rsyncはソースホストがコマンドだと思います

だから私は.sshを使ってSSH経由で接続されたリモートホストから私のMacのローカルフォルダにファイルをダウンロードしてみましたrsync。私が使用するコマンドは次のとおりです。

$ rsync --progress -avz -e "ssh [email protected] -i ~/.ssh/keyFile" [email protected]:/path/to/files/ ~/Downloads/

プロンプトには、次の内容が表示されます。

[email protected]'s password: [I typed the password here]
bash: 1.2.3.4: command not found
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [Receiver=3.1.3]

1.2.3.4リモートホストアドレスがコマンドとして解釈されるのは奇妙だと思いますか? !どうやって、なぜこれが起こったのかよくわかりません。予想される結果を得てファイルのコピーを開始するには、コマンドをどのように更新する必要がありますか?

答え1

-eフラグにsshコマンドのuser @ host部分を含めたくないと確信しています。努力する

rsync --progress -avz -e "ssh -i ~/.ssh/keyFile" [email protected]:/path/to/files/ ~/Downloads/

答え2

このコマンドで(または)オプションと組み合わせて使用​​すると、sshリモートホストを名前と呼ぶ必要はありません。これは、コマンドのソース仕様の一部であるためです。-e--rshrsync

あなたの場合は、使用するのに十分です

rsync --progress -avz -e "ssh -i ~/.ssh/keyFile" [email protected]:/path/to/files/ ~/Downloads/

rsync-eソースパスに付属のコマンドが実行されます。他のものを使用すると、-v次のようになります。

opening connection using: ssh -i "~/.ssh/keyFile" [email protected] -l root 1.2.3.4 rsync --server --sender -vvlogDtpre.iLfxC . /path/to/files/

1.2.3.4ここでは、ユーザーとしてリモートホストで実行されるコマンドとして解釈されることがわかりますroot実際コマンドライン引数として実行する必要があります)。

rsyncファイルコピーの送信元側で「送信者」を起動し、宛先側で「受信者」を起動します。その後、両方のプロセスは、実際のデータとチェックサムなどを互いに転送してファイルコピーを実行します。上記のコマンドは、リモートホストから送信者を起動(試行)するために使用されるコマンドですssh。などは、rsyncこの目的で使用される--server --sender内部コマンドラインフラグです。rsyncマニュアルrsyncには基本的に「このオプションを直接使用しないでください」と記載されています。

rsyncあなたの場合は、リモートホストの送信者と通信している受信者(ローカル実行)に問題があることをエラーメッセージで確認できます。これは、送信者が正しく起動しなかったため、誤ったsshコマンドが原因で発生します。

関連情報