rsync: trasferimento di file in una sola direzione


21

È possibile utilizzare rsync per copiare i file in una sola direzione?

Ad esempio, supponiamo di avere:

left/a.txt

right/a.txt

dove i file sono inizialmente identici.

Se uno quindi modifica right/a.txt, quindi:

rsync -avv left/ right/

copierà right/a.txtsu left/a.txt.

È possibile limitare rsync alla sola copia da left/a right/(ovvero impedirne la copia da right/a left/)?

Risposte:


33

Hai frainteso rsync. Questo comando:

rsync -avv left/ right/ 

non sincronizzerà nulla da destra a sinistra. Come dice @atbg, sincronizzerà solo da sinistra a destra. Rsync non è un sincronizzatore bidirezionale. Sincronizza il dest con l'origine.

Pagina man di riferimento: http://linux.die.net/man/1/rsync


È interessante notare che quando si utilizza almeno la versione Mac di rsync per sincronizzare la directory remota tramite ssh è bidirezionale - ad es.rsync -avzz -e "ssh -p 2222" /source/ /target/
geotheory

4

Dovrebbe essere rsync [OPTION...] SRC... [DEST]così funziona in quella direzione (a meno che non si cambi dest e src).

left/a.txtdovrebbe essere copiato in right/a.txt:

$ echo 'left' > left/a.txt
$ echo 'right' > right/a.txt
$ cat left/a.txt && cat right/a.txt
left
right
$ rsync -avv left/ right/
sending incremental file list
delta-transmission disabled for local transfer or --whole-file
a.txt
total: matches=0  hash_hits=0  false_alarms=0 data=5

sent 95 bytes  received 34 bytes  258.00 bytes/sec
total size is 5  speedup is 0.04
$ cat left/a.txt && cat right/a.txt
left
left

Se ci sono file specifici che non vuoi includere in rsync, dai un'occhiata a --exclude=PATTERNe --exclude-from=FILE.


2
E ricorda, in caso di dubbio l' --dry-runopzione ti mostrerà un elenco dei file che sarebbero stati trasferiti ma che non eseguono effettivamente il trasferimento. Aggiungo questo all'inizio di ogni rsyncsolo per precauzione, anche se sono sicuro che il comando sia corretto.
slillibri,

1
Data la confusione sull'operazione di rsync, vale forse la pena notare l' --updateopzione di rsync , che salterà (non sincronizzerà) i file che hanno un modifiedtempo più recente sul lato ricevente.
Richard Michael,
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.