質問

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キーを使用しているので、問題なくscpを使用できるため、接続が機能するはずです。

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

役に立ちましたか?

解決

これまで多くのことをしていました。テストを実行したところ、いくつかの提案がありました。

  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であることに気付くので、これはすべて問題ではないかもしれません未来。

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

その他の注意:
これらの愚かな.DS_Storeファイルを除外できます     --exclude '.DS_Store'

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

ラップトップのデスクトップをリモートマシンに押し出すための最後の作業コマンド:

$ rsync -PEav --delete --exclude '.DS_Store' ~/Desktop/ me@remote.example.com:~/rsycn-test

他のヒント

「$ Masi」をチェックします。それはあなたが到達しようとしているホスト名ですか?

次のコマンドを実行してデバッグします。

rsync -e 'ssh -v' -Pav $Masi:~/private/ ~/Dropbox/Courses/math/

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

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

このエラーごと:

  

ssh:ホストポート22への接続:接続が拒否されました

host の単語の後にある二重のスペースに注意してください。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top