web-dev-qa-db-ja.com

sshを介したRsync、または他の何か?

私はOSXからLinuxまたはUnixボックスでrsyncを使用しようとしてきましたが、あまり制御できません。私はこのようなことをしてきました

rsync -avz -e ssh remoteuser@remotehost:/remote/dir /this/dir/ 

返されるエラーは次のとおりです。

bash:rsync:コマンドが見つかりませんrsync:接続が予期せず閉じられました(これまでに0バイトを受信しました)[受信者] rsyncエラー:/SourceCache/rsync/rsync-37.3/rsync/io.c(452にリモートコマンドが見つかりません(コード127) )[レシーバー= 2.6.9]

ただし、ドキュメントを読んだ後、実際にはリモートホストにrsyncデーモンをインストールする必要があると思い始めています。

  1. リモートホストにrsyncサーバーをインストールする必要がありますか?
  2. 無料の代替手段-GUIまたは非GUI--which リモートホストに何もインストールする必要はありません

ありがとう!

10
Dan Rosenstark

サーバーでrsyncコマンドが必要ですが、デーモンを実行する必要はありません。

サーバーで動作するrsyncバイナリを取得し、それを自宅のどこかに置き、次のフラグをコマンドラインに追加します。--rsync-path=/home/user/path/to/rsync

Rsyncをサーバーにコピーしたくない場合は、scpまたはsshfsを使用できます。

sshfs user@Host ~/sync/user-Host
rsync -av ~/local-dir ~/sync/user-Host/remote-dir

その場合、rsyncは完全にローカルで実行されますが、変更はサーバーに伝播されます。

21
Tobu

リモートホストにrsyncが必要です-必ずしもrsyncサーバー(とにかくssl接続を処理しないと思います)ではありませんが、ローカルボックスのrsyncはリモートボックスのrsyncと通信する必要があります。 2つをリンクするためにsshを使用しています。

Rsyncがリモートボックスに存在すると仮定すると、rsyncはシェルにログインしているsshのデフォルトの検索パスにはありません。リモートボックスの設定と権限に応じて、試すことができます

  • --rsync-path =オプションを使用する
  • リモートsshシェルのデフォルトPATHを変更する
  • リモートsshシェルにrsyncのエイリアスを追加する
  • 実行されたリモートコマンドをrsyncへの絶対パスに変更する

または同様のもの。実行可能ファイル(副サーバー)としてのrsyncがリモートホストに存在しない場合は、追加する必要があります。

6
mpez0

上で提案した創造的なsshfsソリューションにもかかわらず、リモートホストでrsyncデーモンを実行せずにrsyncを使用する意味はあまりありません。 rsyncの効率の全体的な考え方は、チェックサムをローカルで計算し、ネットワークを介して比較し、実際に異なるファイルの部分の実際のデータのみを送信することによって、2つのインスタンスにデータセットのローカルコピーを比較させることです。

Sshfsまたは任意のネットワークマウントを使用する場合、チェックサムをローカルで計算し、その上に差を送信するために、リモートホストからネットワークを介してデータセット全体をコピーする必要があるという事実を隠しているだけです。すべてをローカルで削除し、「scp-r」を大量に削除する方が迅速かつ安価です。

1
huge

[〜#〜] scp [〜#〜] を試してください。すでにsshアクセスを持っているので、リモートホストに他に何もインストールする必要はありません:)

リモートホストからローカルホストにファイルをコピーするには、次を使用します。

# scp -R remoteuser@remotehost:/remote/dir /this/dir/ 

または、ローカルホストからリモートホストにファイルをコピーします。

# scp -R /this/dir remoteuser@remotehost:/remote/dir 
0
lyarwood