Domanda

Ho un server in cui memorizzo i dati da Mac A e Mac B.

Uso rsync per mantenere aggiornati i file tra i miei Mac.

Eseguo il seguente codice senza successo

#!/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/

Ricevo il seguente messaggio di errore

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]

Ho in mano le chiavi ssh, quindi la connessione dovrebbe funzionare, dato che posso usare scp senza problemi.

Come puoi utilizzare rsync tra il mio server e uno dei miei Mac?

È stato utile?

Soluzione

Facevo molto di tutto questo. Ho appena eseguito un test, alcuni suggerimenti.

  1. Descrivi l'intero schema utente @ host
  2. Esegui prima la connessione ssh senza rsync, potresti dover prima approvare la tua impronta digitale
  3. Non sembra passare un flag per proteggere gli attributi estesi, questo può produrre file rotti su OS X. Se non hai bisogno di fork di risorse, stai bene, ma la maggior parte delle volte ne hai bisogno.

Il mio caso di test:

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

In quel caso, tutti i file all'interno di ~ / Desktop sono stati copiati nell'host remoto, nella mia home directory. Poiché la directory 'rsyc-test' non esisteva, è stata creata per me. Avevo un .app sul mio desktop, è riuscito, sorprendentemente, funziona. Anche alcuni file .webloc lo hanno fatto e sembrano funzionare, anche se non mi fido di esso.

Suggerirei vivamente di aggiungere la bandiera -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.

Ho eseguito un nuovo test, ho spostato un segnalibro di Interarchy sul mio desktop, so per certo che si interrompono se vengono copiati senza fork di risorse. In esecuzione senza -E rispetto a -E, esiste una differenza di 152 byte nei dati trasferiti. Il primo file sul computer remoto non ha funzionato, il secondo file trasferito ha funzionato.

Non posso fare a meno di notare che nel tuo esempio uno dei tuoi percorsi è ~ / Dropbox, quindi questo potrebbe non avere importanza, dal momento che DropBox, l'app, al momento non supporta affatto i fork di risorse, anche se ho sentito che ci sono piani per il futuro.

Inoltre non stai inviando il flag --delete, se il tuo obiettivo finale è un mirror dei tuoi dati, non lo stai ottenendo, se il tuo obiettivo finale è un backup che cresce continuamente, mantenendo tutto ciò che è mai stato alla fonte , la mancanza di --delete è buona.

Altre note:
Puoi escludere quegli stupidi file .DS_Store     --esclude '.DS_Store'

Puoi anche impostare rsync in modo da essere un vero mirror, quindi non avresti bisogno di eseguire l'altro comando, vedi la pagina man per i dettagli.

Il mio ultimo comando funzionante per trasferire il desktop del mio laptop su una macchina remota:

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

Altri suggerimenti

Controlla " $ Masi " ;. È questo il nome host che stai cercando di raggiungere?

Prova il seguente comando per eseguire il debug:

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

La connessione rifiutata si verifica in genere quando si verifica un problema di connessione al telecomando (ad es. firewall).

Nel tuo caso il problema è che la variabile $ Masi è vuota. Se non è variabile, usa Masi .

Come da questo errore:

  

ssh: connettersi alla porta host 22: connessione rifiutata

Nota il doppio spazio sopra riportato dopo la parola host .

il messaggio connettiti all'host non dice a quale host, quindi stai provando a connetterti a un host vuoto. Quindi suona come un refuso nel nome host.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top