4

Mac A と Mac B からのデータを保存するサーバーがあります。

rsync を使用して、Mac 間でファイルを最新の状態に保ちます。

次のコードの実行に失敗しました

#!/bin/zsh

#    to copy files from my server to my folder
rsync -Pav $Masi:~/private/ ~/Dropbox/Courses/math/

#    to  copy files from my folder to my server
rsync -Pav ~/Dropbox/Courses/math $Masi:~/private/

次のエラー メッセージが表示されます

ssh: connect to host  port 22: Connection refused
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: unexplained error (code 255) at io.c(600) [receiver=3.0.5]
ssh: connect to host  port 22: Connection refused
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(600) [sender=3.0.5]

問題なくscpを使用できるため、sshキーが配置されているため、接続が機能するはずです。

サーバーと Mac の間で rsync を使用するにはどうすればよいですか?

4

3 に答える 3

4

私はこれをたくさんやっていました。テストを実行したところ、いくつかの提案がありました。

  1. user@host パターン全体を綴ります
  2. 最初に rsync を使用せずに ssh 接続を実行します。最初に指紋を承認する必要がある場合があります
  3. 拡張属性を保護するフラグを渡していないようです。これにより、OS X で壊れたファイルが生成される可能性があります。リソース フォークが必要ない場合は問題ありませんが、ほとんどの場合必要です。

私のテストケース:

$ rsync -Pav ~/Desktop/ me@remote.example.com:~/rsyc-test

その場合、~/Desktop 内のすべてのファイルがリモート ホストのホーム ディレクトリにコピーされました。ディレクトリ「rsyc-test」が存在しなかったので、私のために作成しました。デスクトップに .app がありましたが、驚くほどうまくいきました。私はそれを信頼していませんが、いくつかの .webloc ファイルでさえそれを作成し、動作しているように見えます.

-E フラグを追加することを強くお勧めします

  -E, --extended-attributes
         Apple specific option  to  copy  extended  attributes,  resource
         forks,  and  ACLs.   Requires at least Mac OS X 10.4 or suitably
         patched rsync.

私は新しいテストを実行し、Interarchy ブックマークをデスクトップに移動しました。これらがリソース フォークなしでコピーされた場合、これらが機能しなくなることがわかっています。-E なしで実行する場合と -E を使用する場合では、xfered データに 152 バイトの違いがあります。リモート マシン上の最初のファイルは機能しませんでしたが、2 番目に転送されたファイルは機能しました。

あなたの例では、あなたのパスの 1 つが ~/Dropbox であることに気が付かずにはいられません。アプリである DropBox は現在、リソース フォークをまったくサポートしていないため、これはすべて問題ではないかもしれませんが、将来的には計画があると聞いています。

また、 --delete フラグを送信していません。最終目標がデータのミラーである場合、それを取得していません。最終目標が継続的に拡大するバックアップであり、これまでソースにあったものすべてを保持している場合、の --delete が良いです。

その他の注意事項:
これらのばかげた .DS_Store ファイルを除外できます --exclude '.DS_Store'

真のミラーになるように rsync を設定することもできるため、他のコマンドを実行する必要はありません。詳細については、man ページを参照してください。

ラップトップのデスクトップをリモートマシンに移動するための最終的な作業コマンド:

$ rsync -PEav --delete --exclude '.DS_Store' ~/Desktop/ me@remote.example.com:~/rsycn-test
于 2009-05-02T03:25:17.177 に答える
1

「$Masi」を確認してください。それはあなたが到達しようとしているホスト名ですか?

次のコマンドを試してデバッグしてください。

rsync -e 'ssh -v' -Pav $Masi:~/private/ ~/Dropbox/Courses/math/
于 2009-05-02T02:25:49.177 に答える
1

通常、接続が拒否されるのは、リモートへの接続に問題がある場合 (ファイアウォールなど) に発生します。

あなたの場合、問題は$Masi変数が空であることです。変数でない場合は、 を使用しますMasi

このエラーに従って:

ssh:connect to host port 22: Connection refused

host単語の後のダブル スペースに注意してください。

ホストへの接続メッセージはどのホストに接続するかを示していないため、空のホストに接続しようとしています。そのため、ホスト名のタイプミスのように聞こえます。

于 2016-12-02T20:34:00.813 に答える