Qualcuno può dirmi cosa fa questo?
rsync -uva --delete /srv/bkp01 /srv/offbk2/ > ~/offbkp01.log
Elimina bkp01
e offbk2
invia un registro offbkp01.log
?
Qualcuno può dirmi cosa fa questo?
rsync -uva --delete /srv/bkp01 /srv/offbk2/ > ~/offbkp01.log
Elimina bkp01
e offbk2
invia un registro offbkp01.log
?
Risposte:
Per dividere questo in parti, ci sono due sezioni principali, seguite da un riepilogo e note:
rsync
comando:rsync -uva --delete /srv/bkp01 /srv/offbk2/
rsync-command > ~/offbkp01.log
rsync
comando:rsync
- Presumo che ciò non abbia bisogno di spiegazioni (ma fornirà se richiesto).-uva
- Un set di opzioni per singolo personaggio, essendo (mostrato in forma breve e lunga):
-u
--update
- Indica a rsync che tutte le modifiche dovrebbero applicarsi solo ai file sulla destinazione che hanno la stessa età (e dimensioni diverse) o più vecchi di quelli sulla fonte. Cioè, rsync dovrebbe solo trasmettere le modifiche dall'origine che aggiornerebbe la destinazione, ma non dovrebbe apportare alcuna modifica che farebbe diventare un file di destinazione una versione precedente.
Ci sono alcune eccezioni. Le differenze di tipo (ad esempio, uno è un file, l'altro è una directory) causerà un aggiornamento indipendentemente dalle date. Symlink e altri file speciali ignorano questa opzione. E, soprattutto, questo non influisce su quali file vengono eliminati.
-v
--verbose
- Aumenta la quantità di informazioni che rsync stampa durante l'esecuzione. Senza questo, rsync non stamperà (quasi?) Nulla. Con questa opzione così com'è, rsync ti dirà quali file vengono trasferiti e metterà un riepilogo alla fine. Più v
s aumenta le informazioni stampate, anche se la pagina man dice che più di due v
s dovrebbero essere usate solo durante il debug. -a
--archive
- Ciò equivale a diverse altre opzioni ( -rlptgD
) impacchettate insieme. Come suggerisce il nome lungo, è un modo rapido per impostare molte opzioni comuni per l'archiviazione di file e directory. Lo farà:-r
--recursive
- Indica a rsync di copiare ricorsivamente le directory. Senza questa o l' -d
--dirs
opzione più particolare , rsync salterebbe semplicemente tutte le directory che ha incontrato (e te ne parlerebbe nel suo output). -l
--links
- Quando l'origine è un collegamento simbolico, creare un collegamento simbolico sulla destinazione. A seconda di altre opzioni, i collegamenti simbolici potrebbero altrimenti essere saltati o trasformati in una copia completamente separata (ad es. Una directory vera con contenuto (o un'altra copia del file) invece del collegamento simbolico). -p
--perms
- Imposta le autorizzazioni dei file di destinazione sugli stessi dei file di origine. -t
--times
- Imposta i tempi di modifica dei file di destinazione sugli stessi dei file di origine. Poiché mantenere questi tempi sincronizzati rende l'algoritmo rsync più efficiente, generalmente si desidera sempre che questo sia usato, esplicitamente o implicitamente. -g
--group
- Imposta l'attributo di gruppo della destinazione sullo stesso dell'origine. Associato per nome per impostazione predefinita, ma in alcuni casi tornerà al numero ID del gruppo. Se rsync ricevente non viene eseguito come superutente (o fingendolo --fake-super
), è possibile impostare solo i gruppi di cui l'utente che ha invocato rsync sul lato ricevente può essere impostato. Altrimenti, il gruppo verrà semplicemente impostato sul gruppo predefinito dello stesso utente menzionato in precedenza. -D
- Equivalente alle opzioni --devices
e --specials
insieme. Intendono:--devices
- Vengono trasferiti i file dei dispositivi a caratteri e blocchi. Non ha alcun effetto se rsync ricevente non viene eseguito come superutente (o fingendolo --fake-super
). --specials
- Vengono trasferiti file speciali (come socket) (altrimenti non lo sarebbero). --delete
- Indica a rsync di eliminare i file che si trovano sulla destinazione, ma non sull'origine. Questo NON è influenzato dall'opzione di aggiornamento impostata sopra (anzi, come potrebbe essere poiché la maggior parte dei file system non conserva i dati necessari per vedere quale azione è stata più recente?). Questa opzione agisce sui sorgenti dopo l' espansione jolly / glob, quindi dir / * non è lo stesso di dir /. Alcune note importanti:--dry-run
opzione, che farà un finto trasferimento che ti consente di assicurarti che non vengano apportate modifiche indesiderate. --ignore-errors
opzione, anche se probabilmente non vorrai / non vorrai farlo.--delete-during
viene utilizzato l' algoritmo. Se il ricevitore è più vecchio, --delete-before
viene utilizzato. Se è importante che i file mantengano un certo tipo di coerenza in caso si verifichi un errore (come non eliminare nulla fino a quando non vengono apportate tutte le altre modifiche), è necessario utilizzare un'opzione più specifica di quella predefinita./srv/bkp01
- Il file o la directory di origine. Ci sono alcune regole dettagliate su cosa significhi se c'è / non è una barra alla fine della directory e se esiste l'altra directory. Puoi vedere la sezione USAGE della pagina man per i dettagli, ma qui la mancanza di una barra finale significa che questa directory verrà copiata nella destinazione, piuttosto che il contenuto di questa directory verrà copiato nella destinazione. Lo stesso se questo è un file anziché una directory./srv/offbk2/
- La directory di destinazione. In generale, questo sarà sempre l'ultimo elemento elencato nella sezione comandi rsync a meno che non venga utilizzata un'opzione per specificarlo altrove nel comando.>
- Questo reindirizza stdout (l'output standard) da qualsiasi cosa sia a sinistra al file a destra, diventando il suo contenuto e creando il file (se possibile) se non esiste già. Alcune note:2>&1
alla fine del comando sopra. L'ordine è importante, quindi fai attenzione generalizzando dove metterlo. Il numero magico si 1
riferisce a stdout, si 2
riferisce a stderr, &
è (essenzialmente) "l'indirizzo di" e lo snippet di comando completo significa "reindirizzare l'output di stderr nel flusso stdout". >>
invece. Il metodo per reindirizzare stderr nello stesso posto rimane lo stesso. 1> stdout_file 2> stderr_file
. Puoi anche usare >>
invece di >
quel comando per farlo aggiungendo invece di sostituire.~
- Questa è una scorciatoia per la home directory dell'utente corrente e fa parte del bit successivo.~/offbkp01.log
- il file offbkp01.log nella home directory dell'utente corrente. Questo è dove l'output del comando rsync verrà inserito a causa del reindirizzamento con >
.In breve, questo comando:
/srv/bkp01
, /srv/offbk2/bkp01
, e cancellerà tutto ciò /srv/offbk2/
che non è in/srv/bkp01
, con le seguenti condizioni:
/srv/offbk2/
che è più recente rispetto al suo tempo di modifica su /srv/bkp01
, esso non verrà aggiornato , se entrambe le voci sono ancora dello stesso tipo (normale file, directory o link simbolico (? )). Inoltre, rsync stamperà alcune informazioni su ciò che sta facendo (in particolare, quali file vengono trasferiti e un riepilogo finale ), che la shell scriverà nel file ~/offbkp01.log
. Il file di registro verrà creato di nuovo se non esiste già e verrà sovrascritto se esiste già.
NB: --fake-super
è un'opzione utilizzata per far sì che rsync simuli le attività dei super-utenti. Lo fa utilizzando gli attributi estesi dei file per memorizzare gli attributi che non è possibile impostare senza avere maggiori privilegi. La versione reale di ciascun attributo è impostata su qualsiasi cosa abbia senso date le opzioni e i privilegi disponibili. Sebbene ciò renda conveniente eseguire alcuni backup anche se non si dispone dei privilegi di superutente, si dovrebbe anche notare che potrebbe comportare un rischio per la sicurezza maggiore dell'uso di rsync in generale, poiché gli attributi di sicurezza reali potrebbero non essere impostati correttamente, anche se è stato eseguito il backup delle informazioni su di essi.
Fonte: molto tempo lavorando con rsync e leggendo la sua pagina di manuale .
Dal manuale:
--Elimina
Questo dice a rsync di eliminare i file estranei dal lato di ricezione (quelli che non si trovano sul lato di invio), ma solo per le directory che vengono sincronizzate. È necessario avere rsync per inviare l'intera directory (ad esempio "dir" o "dir /") senza utilizzare un carattere jolly per il contenuto della directory (ad esempio "dir / *") poiché il carattere jolly viene espanso dalla shell e rsync riceve quindi una richiesta per trasferire singoli file, non la directory principale dei file. I file esclusi dal trasferimento sono anche esclusi dall'eliminazione a meno che non si usi l'opzione --delete-excluded o si contrassegni le regole come corrispondenti solo sul lato di invio (vedere i modificatori di inclusione / esclusione nella sezione REGOLE DI FILTRO).
Quindi eliminerà i file dalla destinazione che non fanno parte della directory originale se non si utilizzano i caratteri jolly.
Directory di origine:
1.txt
2.txt
3.txt
Directory di destinazione:
4.txt
4.txt scomparirà dopo rsync e 1.txt, 2.txt e 3.txt saranno sulla destinazione.
Per quanto riguarda le altre cose:
uva
No, elimina solo i file estranei dalla bkp01
directory.
Anche:
-u
, --update
- salta i file più recenti sul ricevitore-v
, --verbose
- aumentare la verbosità-a
, --archive
- modalità archivio; è uguale a -rlptgoD (no -H, -A, -X)L'output del rsync -uva --delete /srv/bkp01 /srv/offbk2/
comando viene inviato al ~/offbkp01.log
file utilizzando l' operatore di reindirizzamento ( >
) anziché essere stampato nel terminale. Se il file non esiste verrà creato. Se il file esiste, il vecchio contenuto verrà cancellato.
Vedi man rsync
per maggiori informazioni.
bkp01
. Elimina solo file estranei, ovvero quelli che non esistono nella sorgente, dalla destinazione.
rsync
Copia file remota - Sincronizza gli alberi dei file su dischi, directory locali o attraverso una rete.
-u update
-v verbose
-a archive
--delete --> delete
Qui eliminerà i file all'interno di offbk2 .
Quindi l'output del risultato (corretto o meno) verrà reindirizzato a quel file di registro.