Rsync consente di sincronizzare i file in entrambi i modi?


25

Ho eseguito il backup di un server Web Linux usando rsync con cygwin. Ora ho una copia perfetta del server sul mio laptop Windows. Se elimino o modifico un file sul mio computer portatile ed eseguo di nuovo rsync con cygwin, eliminerà / aggiornerà lo stesso file sul server? Ho l'impressione che se elimino / modifico sul server ed eseguo rsync sul mio laptop, questo cancellerà / modificherà il file locale sul mio laptop ma questo funziona al contrario?


12
Questa non è una risposta alla tua domanda, ma dovresti dare un'occhiata unison. È uno strumento di sincronizzazione che salva lo stato del file su entrambe le copie e consente quindi la sincronizzazione bidirezionale. C'è anche un pacchetto cygwin.
Dubu,

Risposte:


29

Rsync esegue una sincronizzazione unidirezionale, tuttavia spetta a te decidere in che direzione va la sincronizzazione.

La sintassi del comando Rsync è la seguente:

rsync [OPTION...] SRC... [DEST]

Si noti che si specifica la sincronizzazione dall'origine alla destinazione. L'origine e la destinazione possono essere qualsiasi percorso locale o remoto.

Ad esempio, se vuoi copiare i file dal tuo server sul tuo laptop, fai:

rsync [OPTION...] <server-path> <laptop-path>

Per sincronizzare nella direzione opposta, fai:

rsync [OPTION...] <laptop-path> <server-path>

Quindi, per rispondere alla tua domanda: dipende da come esegui rsync.

Se si desidera eliminare i file sulla destinazione, è necessario utilizzare l' --deleteopzione. Ma fai attenzione, perché se commetti un errore quando specifichi la tua fonte, finirai per rimuovere tutto sulla destinazione. È più sicuro testare prima la sincronizzazione senza --deleteopzione e una volta che sei soddisfatto di come funziona puoi aggiungere --deleteun'opzione.

Come suggerito da Masegaloeh nei commenti seguenti, -no l' --dry-runopzione può anche essere usata per testare il rsynccomportamento del comando.


9
Nota aggiuntiva: per testare il comportamento rsync, è possibile utilizzare il parametro -no --dry-run, quindi si saprà quale file verrà eliminato e modificato
masegaloeh,

1

Uno strumento wrapper scritto in python3 chiamato bsyncquale wrapping finde rsynccomando semplifica l'attività. Repository Github: https://github.com/dooblem/bsync

Non aver paura quando è su github (cioè in un modo in cui pensi di essere un programmatore per usare lo strumento).


-1

considera l'utilizzo di --delete-after e non --delete, questo assicurerà che la tua parte ricevente eliminerà i file dopo il trasferimento, non prima.


Suppongo che i downvotes siano dovuti al fatto che l'OP non sta cercando di rsynceliminare nulla. Sta eliminando le cose da solo. Detto questo, utile suggerimento per la sincronizzazione in generale. Grazie.
Harperville,
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.