Rsync su ssh o qualcos'altro?


10

Ho provato a usare rsync su OSX su Linux o Unix box su cui non ho molto controllo. Ho fatto qualcosa del genere

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

L'errore restituito è:

bash: rsync: comando non trovato rsync: connessione inaspettatamente chiusa (0 byte ricevuti finora) [ricevitore] errore rsync: comando remoto non trovato (codice 127) su /SourceCache/rsync/rsync-37.3/rsync/io.c(452 ) [ricevitore = 2.6.9]

Tuttavia, dopo aver letto i documenti sto cominciando a pensare che avrei effettivamente bisogno di installare un demone rsync sull'host remoto.

  1. Devo installare un server rsync sull'host remoto?
  2. Alternative gratuite - GUI o non-GUI - che non richiedono l'installazione di nulla sull'host remoto ?

Grazie!


1
Quali sono i problemi esatti che hai con il tuo comando attuale?
fideli,

@fideli, scusa, me ne sono dimenticato. Domanda di modifica ora
Dan Rosenstark,

1
Grazie per questa domanda, ma puoi taggarla per rsyncfavore?
Andrew Grimm,

Risposte:


21

È necessario un comando rsync sul server, ma non è necessario eseguire un demone.

Ottenere un binario rsync che funziona su server, metterlo da qualche parte in casa, e aggiungere questo flag per la riga di comando: --rsync-path=/home/user/path/to/rsync.

Se non vuoi copiare rsync sui server, puoi usare scp o sshfs.

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

In tal caso rsync verrà eseguito completamente localmente, ma le modifiche verranno propagate al server.


Mi piace molto questa soluzione, soprattutto perché il server è un piano di hosting economico su GoDaddy e dubito che sarò in grado di eseguire rsync sul server. +1 per ora!
Dan Rosenstark,

Qual è il percorso più semplice da percorrere per l'installazione di sshfs su OSX? MacFuse o c'è qualcosa di più semplice?
Dan Rosenstark,

MacFuse + (MacFusion o sshfs-static-leopard), penso (non sono un utente OSX)
Tobu

Sì, MacFuse lo fa. Solo che la pagina di download per il binario sshfs ti dà il binario con estensione .gz. Quindi devi rinominarlo invece di sparargli. Fastidioso ma adesso va bene! Grazie
Dan Rosenstark,

6

Devi avere rsync sull'host remoto - non necessariamente un server rsync (che, credo, non gestirà comunque la connessione ssl), ma rsync sulla casella locale deve parlare con un rsync sulla casella remota. Stai usando ssh per collegare i due.

Supponendo che rsync esista sulla casella remota, non si trova nel percorso di ricerca predefinito per la shell SSH registrata. A seconda delle tue preferenze e autorizzazioni sulla casella remota, puoi provare

  • usando l'opzione --rsync-path =
  • cambiando il PATH predefinito per la tua shell ssh remota
  • aggiungendo un alias per rsync nella shell ssh remota
  • cambiando il comando remoto eseguito nel percorso assoluto in rsync

o qualcosa di simile. Se rsync come eseguibile (vice server) non esiste sull'host remoto, dovrebbe essere aggiunto.


Questo è stato utile, quindi +1, ma mi chiedo come specificare la directory iniziale per rsync sul lato Windows se lo sto eseguendo da Mac a PC in questo modo: superuser.com/questions/1462861/…
Ryan

1

Non ha molto senso usare rsync senza eseguire un demone rsync sull'host remoto, nonostante la soluzione creativa sshfs proposta sopra. L'idea di efficienza in rsync è di fare in modo che le due istanze confrontino le loro copie locali del set di dati calcolando i checksum localmente, confrontandoli sulla rete e trasmettendo i dati effettivi solo per quelle parti di quei file che differiscono effettivamente.

Se usi sshfs o qualsiasi mount di rete, nasconde solo il fatto che deve copiare l'intero set di dati attraverso la rete dall'host remoto per calcolare i checksum localmente e quindi trasmettere le differenze. Sarebbe più veloce ed economico eliminare tutto a livello locale e 'scp -r' il lotto.


3
Non esattamente, perché rsync verifica se i file sono modificati in base a dimensioni e data e ora, e questo è ancora molto più efficiente rispetto alla scansione di tutti i file. Ma in effetti, il meccanismo di aggiornamento incrementale rsync all'interno dei file non ha senso su sshfs.
Jaap Eldering,

0

Prova SCP . Dato che hai già accesso a ssh non devi installare nient'altro sull'host remoto :)

Per copiare i file dall'host remoto all'host locale usare:

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

Oppure copia i file dall'host locale all'host remoto con:

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

1
Grazie Lee, SCP è fantastico ma non "sincronizza" giusto?
Dan Rosenstark,

1
deve essere una piccola "r":scp -r
0x4a6f4672,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.