Sincronizzazione di cartelle con rsync

In questa pubblicazione copro le basi di rsync, in preparazione per una pubblicazione futura che coprirà i backup e l’uso Di rsync in combinazione con Cronjobs per automatizzare il processo di backup. Dalla copia e alla sincronizzazione dei file e delle cartelle locali, al suo utilizzo per trasferire le informazioni tra i computer. Il suo utilizzo come servizio quando SSH non è disponibile è stato spostato nella propria sezione.

Temi
I principi di base di Rsync
Comprending File e cartelle locali
Liding with Spaces in Bianco e Altri personaggi rari
Aggiornare il contenuto di una cartella
Sincronizzazione di due cartelle con rsync
Compressione dei file prima di trasferirli
Trasferimento di file tra due sistemi remoti
esclusi i file e le directory
usando Rsync come servizio (spostato nella propria sezione)
alcuni parametri rsync aggiuntivi
note a piè di pagina

I principi di base di rsync

rsync è uno strumento di copia molto versatile incluso in quasi tutte le versioni Linux. Può essere utilizzato come strumento di copia avanzata, consentendoci di copiare i file localmente o in remoto. Inoltre, può essere utilizzato come strumento per il backup, supporta la creazione di backup incrementali.

rsync ha un famoso algoritmo del dita del dita che ci consente Per trasferire i file nuovi, nonché le recenti modifiche ai file esistenti, ignorando i file che non sono stati modificati. Oltre a questo, il comportamento di rsync può essere personalizzato, aiutandoci a automatizzare i backup, può anche essere utilizzato come servizio per convertire il computer su un server e consentire ad altri clienti di rsync connettersi ad esso.

Oltre alla copia di file e cartelle locali, rsync ci consente di copiare Utilizzando come medio ssh (shell set), rsh (shell remoto) e può essere eseguito come servizio su un computer e consentire ad altri computer di connettersi, quando rsync è usato come servizio da ascoltare Porta 873.

Quando usiamo rsync come servizio o quando utilizziamo RSH, i dati inviati tra computer non viaggiano crittografati, quindi, se si sta trasferendo File tra due computer nella stessa rete locale, questo è utile, ma questo non dovrebbe essere utilizzato per trasferire file in reti non sicure, così com’è Internet. Per questo scopo SSH è il migliore da usare.

Questo è il motivo principale per cui favorivo l’uso di SSH per i miei trasferimenti, inoltre, grazie a che è sicuro, molti server hanno il servizio SSH disponibile . Ma l’uso di rsync come servizio per i trasferimenti in connessioni veloci, come di solito è il caso nelle reti locali, è utile. Non ho il servizio RSH in esecuzione sui miei computer in modo da poter trovare che preferisco SSH negli esempi. Gli esempi utilizzano SSH come mezzo di trasporto per i trasferimenti tra computer remoti, ma in una pubblicazione separata copro l’uso di rsync come servizio.

Copia di file e cartelle locali

per copiare I contenuti di una cartella in un altro, sostituzione dei file nella cartella Target, possiamo usare:

rsync -rtv carpeta_origen/ carpeta_destino/

Nota che nel Cartella_origen Ho aggiunto una diagonale Alla fine, facendo ciò impedisce che venga creato una nuova cartella, se non aggiungiamo la diagonale, allora una nuova cartella Called_origen cartella verrà creata in FALLER_DESTINE. Pertanto, se si desidera copiare il contenuto di una cartella chiamata immagini all’interno di una cartella denominata immagini che già esistono, è necessario aggiungere la diagonale alla fine, in caso contrario, una cartella chiamata immagini verrà creata all’interno della cartella chiamata immagini che specifichiamo come destinazione.

rsync -rtv origen/ destino/
Rappresentazione grafica del risultato dopo aver usato Rsync con una diagonale alla fine della sorgente cartella.

rsync -rtv origen destino/
Rappresentazione grafica del risultato dopo aver usato rsync senza una diagonale alla fine della cartella di origine .

il parametro significa che farai la copia ricorsiva delle cartelle, cioè creerà l’intera struttura delle cartelle all’interno La cartella di_origen e copierà tutti i file che troveranno all’interno di questi.

Il parametro -t rende rsync Conserva i tempi di modifica dei file che copiano dalla cartella di origine.

Il parametro -v indica che le informazioni stampate durante l’esecuzione del programma saranno molto più dettagliate, possiamo usarlo per vedere il progresso del comando.

Questi sono i parametri che uso frequentemente, dal momento che di solito sto supportando i file personali e questi non contengono cose come collegamenti simbolici, ma un altro parametro molto utile che può essere utilizzato con rsync è il parametro -a.

rsync -av origen/ destino/

il parametro -a rende anche la copia ricorsiva e conserva anche i tempi di modifica, ma copia inoltre i collegamenti simbolici che si trovano come collegamenti simbolici, preservare le autorizzazioni, preservare le informazioni del proprietario e il gruppo di file e preservare i file dei dispositivi e i file speciali. Questo è utile se si sta copiando la directory personale di un utente o se si sta copiando le cartelle di sistema su un altro luogo.

Lididing con spazi vuoti e altri caratteri rari

possiamo sfuggire allo spazio e personaggi rari così come in bash, usando \ prima di qualsiasi spazio vuoto e carattere raro. Inoltre, possiamo utilizzare le virgolette singole per racchiudere la stringa di testo:

rsync -rtv or\{ig\ en/ des\ ti\{no/
rsync -rtv 'or{ig en/' 'des ti{no/'

Aggiorna il contenuto di una cartella

Per salvare la larghezza di banda e il tempo, possiamo evitare di copiare i file che abbiamo già nella cartella di destinazione che non è stato modificato nella cartella di origine. Per fare ciò, aggiungiamo il parametro -U a rsync, questo aggiornerà il contenuto della cartella di destinazione in base alla cartella di origine, è qui che entra nell’algoritmo del dita-trasferimento. Per aggiornare il contenuto di una cartella in base al contenuto di un altro uso:

per impostazione predefinita, rsync Assumere la data dell’ultima modifica del file e la dimensione di questo per decidere quali file devono essere trasferiti e che i file possano essere ignorati, ma possiamo usare invece di questo metodo un hash per decidere se il Il file è diverso o meno.

Per fare ciò, dobbiamo utilizzare il parametro -c, che eseguirà un checksum nei file da trasferire. Questo ignorerà qualsiasi file in cui il checksum corrisponde.

rsync -rvuc carpeta_origen/ carpeta_destino/

Sincronizzazione di due cartelle con rsync

per mantenere due Cartelle di sincronizzazione, non solo abbiamo bisogno di aggiungere i nuovi file nella cartella di origine alla cartella di destinazione, dobbiamo anche rimuovere i file che sono stati eliminati dalla cartella di origine nella cartella di destinazione. rsync ci consente di farlo con il parametro –Delete, questo utilizzato in combinazione con il parametro precedente -U che aggiorna i file modificati ci consente di mantenere due cartelle nella sincronizzazione della larghezza di banda salvataggio.

rsync -rtvu --delete carpeta_origen/ carpeta_destino/

Il processo di cancellazione può essere preso prima, durante e dopo il trasferimento, possiamo controllare a che ora succede usando uno qualsiasi di I seguenti parametri:

  • rsync È possibile cercare i file mancanti ed eliminarli prima del processo di trasferimento, questo è il comportamento predefinito e può essere regolato con --delete-before
  • rsync È possibile cercare i file mancanti e cancellarli dopo che il trasferimento è stato completato, con il parametro --delete-after
  • rsync può eliminare i file durante il trasferimento, quando viene cancellato un file mancante, è eliminato A quel tempo, attiviamo questo comportamento con --delete-during
  • rsync può effettuare il trasferimento e trovare i file mancanti durante questo Processo, attendere fino a quando non è finito ed eliminato i file che hai trovato in seguito, questo può essere ottenuto con --delete-delay

Ad esempio:

>

rsync -rtvu --delete-delay carpeta_origen/ carpeta_destino/

Compressione dei file prima di trasferirli

per salvare un po ‘di larghezza di banda, e di solito rimariamo anche un po’ di tempo, possiamo Comprimere le informazioni che vengono trasferite, possiamo aggiungere il parametro -z a rsync per raggiungere questo obiettivo.

rsync -rvz carpeta_origen/ carpeta_destino/

Se stiamo trasferendo un numero elevato di file su una connessione rapida, rsync può essere più lento con il parametro -z che senza di esso, poiché ci vorrà più tempo per comprimere ogni file come il Tempo che verrà preso semplicemente per trasferire i file nella cartella del_destino. Utilizzare questo parametro se si dispone di una connessione con velocità limitata tra due computer, o se è necessario salvare la larghezza di banda.

Trasferimento di file tra due sistemi remoti

rsync È possibile copiare file e sincronizzare una cartella locale con una cartella remota su un sistema che ha Un sistema con accesso al sistema tramite SSH, tramite RSH, o che esegue rsync come servizio. Esempi Utilizione SSH per il trasferimento di file, ma gli stessi principi si applicano se si desidera eseguire questa operazione con rsync in esecuzione come servizio sul computer remoto, leggi eseguendo Rsync come servizio quando SSH è non disponibile qui sotto per ulteriori informazioni su questo.

Per trasferire file tra il computer locale e un computer remoto, dobbiamo specificare l’indirizzo del computer remoto, può essere un nome di dominio, un indirizzo IP, O il nome di un server che abbiamo precedentemente salvato nel nostro file di configurazione SSH (le informazioni su come eseguire questo possono essere visualizzate nella definizione dei server SSH), seguiti da due punti e la cartella che vogliamo utilizzare per il trasferimento. Si noti che rsync non può trasferire file tra due sistemi remoti, solo una cartella locale o una cartella remota può essere utilizzata in combinazione con una cartella locale. Per fare ciò, usiamo:

cartella locale sulla cartella remota, utilizzando un dominio, un indirizzo IP o un server definito nel file di configurazione SSH:
rsync -rtvz carpeta_origen/ [email protected]:/ruta/a/carpeta_destino/
rsync -rtvz folder_origen / [email protected]/ruta/a/carpet_destino/ rsync -rrtvz_origen_name / servername_name: / route / a / folder_destine /

Cartella remota nella cartella locale , utilizzando un dominio, un indirizzo IP o un server definito nel file di configurazione SSH:
rsync -rtvz [email protected]:/ruta/a/carpeta_origen/ carpeta_destino/
rsync -Rtvz utente @ xxx.xxx.xxx.xxx:/ RUTA / A / Carpet_origen / FOLDER_DESTINO /
RSYNC -RTVZ ServerName: / Route / A / FOLDER_ORIGEN / FOLDER_DESTINE /

Escluso file e directory

Ci sono molti casi in cui abbiamo bisogno Per escludere determinati file e directory da rsync, un caso comune è quando sincronizziamo un progetto locale con un repository remoto o anche con un sito vivente, in questo caso potremmo voler escludere alcuni Directory di sviluppo e alcuni file nascosti da trasferire nel sito vivente. I file escludi possono essere eseguiti con --exclude seguito dalla directory o dal file che vogliamo escludere. La cartella di origine o la cartella di destinazione possono essere una directory locale o una directory remota, come spiegato nella sezione precedente.

rsync -rtv --exclude 'directorio' carpeta_origen/ carpeta_destino/
rsync -rtv --exclude 'archivo.txt' carpeta_origen/ carpeta_destino/
rsync -rtv --exclude 'direccion/a/directorio' carpeta_origen/ carpeta_destino/
rsync -rtv --exclude 'direccion/a/archivo.txt' carpeta_origen/ carpeta_destino/

I percorsi sono relativi alla cartella da cui stiamo chiamando rsync, a meno che non inizi con una diagonale, nel qual caso il percorso sarebbe assoluto.

altro modo Per fare ciò è creare un file con l’elenco di file e directory da escludere da rsync, così come i modelli (tutti i file che rientrano nel modello specificato sarebbero esclusi, *. TXT Escluderebbe qualsiasi file con quell’estensione), uno per riga e chiamare questo file con --exclude-from seguito dal file che vogliamo utilizzare per l’esclusione dei file. Per prima cosa creiamo e modifichiamo questo file nel nostro editor di testo preferito, in questo esempio uso GEDIT, ma è possibile utilizzare Kate, Vim, Nano o qualsiasi altro editor di testo:

touch excluidos.txt
gedit excluidos.txt

In questo file possiamo aggiungere quanto segue:

directorio
direccion/relativa/a/directorio
archivo.txt
direccion/relativa/a/archivo.txt
/home/juan/directorio
/home/juan/archivo.txt
*.swp

e quindi chiamare rsync:

rsync -rvz --exclude-from 'excluidos.txt' carpeta_origen/ carpeta_destino/

Aggiunta di eliminare i file che sono stati eliminati dalla cartella di origine, come spiegato nella sincronizzazione di due cartelle con Rsync, rsync può eliminare i file esclusi dal trasferimento, possiamo farlo con il parametro --delete-excluded, ad esempio:

rsync -rtv --exclude-from 'excluidos.txt' --delete-excluded carpeta_origen/ carpeta_destino/

Questo comando farà rsync ricorsivo , preserverà i tempi di modifica della cartella di origine, aumentare la verbosità, escludono tutti i file che rientrano nei modelli nel file ex Cluidos.txt ed elimina tutti i file esclusi se esistono nella cartella di destinazione.

utilizzando Rsync come servizio quando ssh non è disponibile

è stato spostato nella propria sezione, usando Rsync come servizio

alcuni parametri aggiuntivi di rsync

-t conserva i tempi di modifica dei file che vengono trasferiti.
-q Elimina tutti i messaggi che non sono errori, questo parametro è contrario al parametro -v che mostra molte più informazioni di trasferimento.-d DIV5F3F”> Copia i file da una directory senza utilizzare la ricorsione per copiare le directory interne, nel dire, solo i file vengono trasferiti.
-l Copia i collegamenti simbolici come symlinks
-L Copia i file in cui un simbolo sta puntando quando trovi un simbolo.
-W Copia file interi, poiché quando utilizziamo l’algoritmo di trasferimento delta, viene copiata solo la parte di un file che è stato aggiornato, a volte questo non è desiderato.
--progress mostra il progresso dei file che vengono trasferiti. -h mostra le informazioni che forniscono rsync in un formato più leggibile, Le quantità sono fornite in K’s, M’s, G’s, e così via.

Note del piede

Il numero di opzioni che rsync Dà noi immenso, possiamo definire esattamente quali file vogliamo Trasferimento, quali file specifici vogliamo comprimere, quali file vogliamo eliminare nella cartella di destinazione se questi file esistono, e possiamo affrontare anche i file di sistema, per ulteriori informazioni possiamo utilizzare man rsync e man rsyncd.conf

Lasciare le informazioni che riguardano i backup al di fuori di questa pubblicazione, poiché questo sarà coperto, insieme all’Automazione del processo di backup, in A pubblicazione futura

È possibile utilizzare rsync in Windows attraverso l’uso del cygwin, tuttavia non ho un computer Windows disponibile al momento (o piano Per averlo nel prossimo futuro), quindi anche se ho fatto questo non posso pubblicarlo. Tuttavia, se si utilizza rsync come servizio Windows, è necessario aggiungere “scrict mode = false” su RSYNCD.CONF nei moduli, questo Farà rsync non esamina le autorizzazioni nel file segreto poiché se lo ha fatto, lo avrebbe fallito perché non sarebbe stato configurato correttamente (dal momento che non funzionano come in Linux ).

Questa pubblicazione potrebbe essere aggiornata se c’è qualcosa da correggere o aggiungere ulteriori informazioni se lo vedo necessario.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *