Il comando Linux rsync trasferisce e sincronizza file o directory in modo efficiente tra una macchina locale, un altro host, una shell remota o qualsiasi combinazione di questi. Chiunque lavori con sistemi basati su Linux dovrebbe utilizzare questo potente comando per migliorare la propria produttività. Con l'aiuto di questo articolo imparerai tutto ciò di cui hai bisogno per iniziare a usarlo.
La sincronizzazione delle cartelle o la copia manuale dei file può richiedere molto tempo. L'utilità rsync può fare la maggior parte del lavoro per te aggiungendo fantastiche funzionalità per risparmiare tempo. Anche se perdi la connessione durante il trasferimento, questo strumento partirà esattamente da dove era stato interrotto, una volta ristabilita la connessione.
Sintassi di base
La sintassi di base per rsync funziona come segue:
rsync [optional modifiers] [SRC] [DEST]
Ci sono un paio di modi diversi per usare Linux rsync. In questo esempio, [modificatori opzionali] indicare le azioni da intraprendere, [SRC] è la directory di origine e [DEST] è la directory o la macchina di destinazione.
Sintassi di base per Remote Shell
Quando si utilizza una shell remota, come SSH o RSH, la sintassi rsync sarà leggermente diversa.
Per accedere alla shell remota (PULL ) usa il comando rsync:
rsync [optional modifiers] [USER@]HOST:SRC [DEST]
Per accedere alla shell remota (PUSH ) usa il comando rsync:
rsync [optional modifiers] SRC [USER@]HOST:[DEST]
Come controllare la versione Rsync
Prima di verificare la presenza di rsync, dobbiamo accedere al VPS che utilizzeremo. Questo utile tutorial ti mostrerà come farlo su una macchina Windows usando Putty SSH. Se stai usando un computer MacOS o Linux, usa invece il terminale.
Rsync viene preinstallato con molte distribuzioni Linux. Per verificare se rsync è installato sulla tua macchina, esegui il seguente comando:
rsync -version
Sulla nostra distribuzione Ubuntu il comando ha prodotto il seguente output:
rsync version 3.1.3 protocol version 31
Ciò significa che rsync versione 3.1.3 è già sul nostro computer. Semplice, vero?
Come installare Rsync
Se la tua macchina non ha rsync preinstallato, puoi farlo manualmente in un minuto. Su Debian distribuzioni basate come Ubuntu puoi farlo usando il seguente comando:
apt-get install rsync
Su distribuzioni basate su rpm come Fedora e CentOS usa il seguente comando:
yum install rsync
Su MacOS usa il seguente comando:
brew install rsync
Questo è tutto! Linux rsync è pronto per sincronizzare dati, eseguire trasferimenti di file ed eliminare file. Puoi verificare se l'installazione è andata a buon fine usando il comando menzionato in precedenza:
rsync -version
Come utilizzare i comandi Rsync
Per questo tutorial creeremo due directory sul nostro desktop Linux con i nomi original e duplicare . La directory originale contiene tre file mentre il duplicato è vuoto. Ora vediamo come rsync creerà nuovi modi per aumentare la produttività.
Per creare due directory di test utilizzare i seguenti comandi:
cd ~ mkdir original mkdir duplicate touch original/file{1..3}
Se vuoi ricontrollare, usa ls comando per elencare tutti i file all'interno della directory:
ls original
L'output sarà simile a questo:
file1 file2 file3
Se usi ls comando con la directory duplicata, l'outlook dovrebbe essere vuoto.
Ora che le directory sono impostate, proviamo qualche altro comando.
Il comando seguente copierà o sincronizzerà tutti i file nell'originale directory nel duplicato directory.
rsync original/* duplicate/
* indica al comando rsync di sincronizzare tutto nella directory originale con il duplicato.
Se posizioniamo una nuova immagine o file nella cartella originale ed eseguiamo nuovamente lo stesso comando, solo la nuova immagine verrà copiata nella destinazione.
Questa funzione è utile quando si copiano file su una rete con larghezza di banda limitata.
Risincronizza i comandi più comuni
Ecco un elenco dei comandi più comuni utilizzati con rsync:
Ciò abilita la modalità di archiviazione.
-a, --archive
Questo ti dà un output visivo che mostra lo stato di avanzamento del processo.
-v, --verbose
Questo esce in un formato leggibile dall'uomo.
-h, --human-readable format
Questo comprime i dati del file durante il trasferimento.
-z, --compress
Questo serve per copiare i dati in modo ricorsivo
-r
Come utilizzare i comandi Rsync con le sottodirectory
Tieni presente che il comando precedente copierà solo i file dall'originale la directory principale della cartella e non nessuna delle sottodirectory.
Se vuoi copiare anche le sottodirectory, dovrai usare questo comando:
rsync -r original/ duplicate/
Il -r (–ricorsivo ) dice a rsync di copiare tutto, comprese le sottodirectory e i file dalla nostra cartella originale.
Il / modificatore utilizzato dopo originale indica a rsync di copiare il contenuto della directory originale nella cartella duplicata.
Come sincronizzare i file
Se desideri sincronizzare i file, significa copiare i file che si trovano nella cartella di destinazione, ma non sono in originale nella cartella originale, utilizzare il comando seguente:
rsync -r original duplicate/
Con questo comando possiamo essere sicuri che sia la cartella originale che quella duplicata conterranno tutti gli stessi file.
Come combinare i comandi Rsync
Un'altra opzione utile è -a (–archivio) poiché può essere unito a molti altri comandi. Ciò significa che non solo copierà i file, ma copierà anche i permessi, i tempi di modifica e qualsiasi altra data.
Aggiunta di -a opzione con -v sarebbe simile a questo:
rsync -av --dry-run original/ duplicate/
Non preoccuparti, sembra solo complicato. Analizziamolo.
Questo comando visualizzerà solo i file che verranno copiati senza apportare modifiche effettive. Con questo comando puoi ottenere un elenco dei file che verranno copiati.
Se tutti i file sono quelli che vuoi copiare, esegui nuovamente il comando senza —dry-run .
—funzionamento a secco (o -n ) fa eseguire a rsync un'esecuzione di prova che non apporta modifiche.
Altre opzioni per i comandi Rysnc
Quando si aggiunge il -a opzione per -v opzione, facendo -av al nostro comando, aumenta la verbosità. Ecco come dovrebbe essere:
rsync -av original/ duplicate/
Se desideri sincronizzare due cartelle ed eliminare gli elementi nella cartella duplicata, che non esistono nella cartella originale, aggiungi il –elimina opzione, in questo modo:
rsync -av --delete original/ duplicate/
Puoi anche escludere file o sottodirectory specifici durante la sincronizzazione di due cartelle. Fallo aggiungendo -exclude= . Se devi specificare più di un file, separali con una virgola.
rsync -av --exclude=file1,file2 original/ duplicate/
Puoi anche includere file o sottodirectory specifici durante la sincronizzazione. Fallo aggiungendo -include= . Puoi anche usarlo con l'opzione -exclude=. L'esempio seguente includerà i file che iniziano con la lettera L ed escludere tutti gli altri file:
rsync -av --include=L* --exclude=* original/ duplicate/
Usando Rsync, puoi anche specificare la dimensione del file che può essere sincronizzato. Per fare ciò, usa la –dimensione massima opzione:
rsync -av --max-size=10k original/ duplicate/
Utilizzando l'opzione -z (–compress) consoliderà i file che vengono trasferiti sulla rete. Come bonus, vediamo come effettuare un trasferimento dal server di origine a un altro. Il comando sarebbe simile a questo:
rsync -az ~/Desktop/Original [email protected]:~/tmp/
Come accennato prima -z comprime i file, -a , o semplicemente aggiungendo a a -z, si assicurerà che vengano copiate anche tutte le autorizzazioni.
~/Desktop/Originale è la fonte. È una directory locale, quella che si trova sulla macchina su cui hai effettuato l'accesso e, infine, [email protected]:~/tmp/ indica la destinazione. [email protected] è l'indirizzo del server remoto di destinazione, mentre :~/tmp/ punta a una cartella specifica su quella macchina.
Come aggiungere una barra di avanzamento
Oltre ai comandi precedenti, puoi aggiungere -P che unirà le opzioni –progress e –parziale . Questo ti darà una barra di avanzamento per i file trasferiti e ti consentirà anche di riprendere eventuali trasferimenti di file interrotti.
rsync -azP [SRC] [DEST]
L'output sarà simile a questo:
sending incremental file list ./ file1 0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=1/3) file2 0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=2/3) file3 0 100% 0.00kB/s 0:00:00 (xfer#3, to-check=3/3)
Quindi, se eseguiamo nuovamente il comando, vedremo un output più breve. Questo perché non sono state apportate nuove modifiche. L'output sarà simile a questo:
sending incremental file list send 26 bytes received 5 bytes 1200.00 bytes/sec total size is 0 speedup is 0.00
Se vuoi trasferire solo alcuni file, puoi specificare con il seguente comando:
touch original/file{1..5} rsync -azP [SRC] [DEST]
Questo darà un output simile al comando precedente, ma solo con i file specificati tra parentesi graffe.
Come creare un backup Rsync
Un altro comando importante è creare un backup Rsync. Fallo combinando –backup con la –dir comando in modo da poter specificare dove verranno archiviati i file di backup.
rsync -a --delete --backup --backup-dir=/path/to/backup /path/to/SRC [DEST]
Conclusione
Abbiamo coperto solo la punta dell'iceberg quando si tratta di comandi Rsync. Linux Rsync è un'utilità incredibilmente potente che ogni amministratore di server o sviluppatore Linux dovrebbe conoscere. Abbiamo coperto tutto per iniziare, dall'installazione ai comandi di base. Se vuoi conoscere le funzionalità più avanzate, controlla la documentazione ufficiale.
Preparati a migliorare la tua produttività. Buona fortuna con il tuo progetto.