La guida per non principianti alla sincronizzazione dei dati con Rsync

Feb 11, 2025
Privacy e sicurezza
CONTENUTO UNCACHED

Il protocollo rsync può essere abbastanza semplice da usare per i normali lavori di backup / sincronizzazione, ma alcune delle sue caratteristiche più avanzate potrebbero sorprendervi. In questo articolo, mostreremo come anche i più grandi accumulatori di dati e gli appassionati di backup possono utilizzare rsync come un'unica soluzione per tutte le loro esigenze di ridondanza dei dati.

Avvertenza: solo per esperti esperti

Se sei seduto lì a pensare "Che diavolo è rsync?" oppure "Uso rsync solo per attività molto semplici", potresti consultare il nostro precedente articolo su come usare rsync per eseguire il backup dei dati su Linux , che fornisce un'introduzione a rsync, guida l'utente durante l'installazione e mostra le sue funzioni più basilari. Una volta che hai una solida conoscenza di come utilizzare rsync (onestamente, non è così complesso) e sei a tuo agio con un terminale Linux, sei pronto per passare a questa guida avanzata.

Esecuzione di rsync su Windows

Innanzitutto, mettiamo i nostri lettori di Windows sulla stessa pagina dei nostri guru di Linux. Sebbene rsync sia progettato per funzionare su sistemi simili a Unix, non c'è motivo per cui non dovresti essere in grado di usarlo altrettanto facilmente su Windows. Cygwin produce una meravigliosa API Linux che possiamo usare per eseguire rsync, quindi vai al loro sito Web e scarica il file 32 bit o 64 bit versione, a seconda del computer.

L'installazione è semplice; è possibile mantenere tutte le opzioni ai valori predefiniti finché non si arriva alla schermata "Seleziona pacchetti".

Ora devi fare gli stessi passaggi per Vim e SSH, ma i pacchetti appariranno un po 'diversi quando andrai a selezionarli, quindi ecco alcuni screenshot:

Installazione di Vim:

Installazione di SSH:

Dopo aver selezionato questi tre pacchetti, continua a fare clic su Avanti fino al termine dell'installazione. Quindi puoi aprire Cygwin facendo clic sull'icona che il programma di installazione ha posizionato sul desktop.

Comandi rsync: da semplice ad avanzato

Ora che gli utenti Windows sono sulla stessa pagina, diamo un'occhiata a un semplice comando rsync e mostriamo come l'uso di alcune opzioni avanzate può renderlo rapidamente complesso.

Supponiamo che tu abbia un sacco di file di cui è necessario eseguire il backup, chi non lo fa in questi giorni? Collega il tuo disco rigido portatile in modo da poter eseguire il backup dei file del computer ed emetti il ​​seguente comando:

rsync -a / home / geek / files / / mnt / usb / files /

Oppure, come apparirebbe su un computer Windows con Cygwin:

rsync -a / cygdrive / c / files / / cygdrive / e / files /

Abbastanza semplice, ea quel punto non c'è davvero bisogno di usare rsync, poiché potresti semplicemente trascinare e rilasciare i file. Tuttavia, se l'altro disco rigido ha già alcuni dei file e necessita solo delle versioni aggiornate più i file che sono stati creati dall'ultima sincronizzazione, questo comando è utile perché invia solo i nuovi dati al disco rigido. Con file di grandi dimensioni, e in particolare il trasferimento di file su Internet, questo è un grosso problema.

Eseguire il backup dei file su un disco rigido esterno e quindi mantenere il disco rigido nella stessa posizione del computer è una pessima idea, quindi diamo un'occhiata a cosa richiederebbe per iniziare a inviare i tuoi file su Internet a un altro computer ( uno che hai affittato, un familiare, ecc.).

rsync -av --delete -e 'ssh -p 12345' / home / geek / files / [email protected]: / home / geek2 / files /

Il comando precedente invierà i tuoi file a un altro computer con un indirizzo IP di 10.1.1.1. Eliminerebbe i file estranei dalla destinazione che non esistono più nella directory di origine, visualizzerà i nomi dei file trasferiti in modo da avere un'idea di cosa sta succedendo e eseguirà il tunnel rsync tramite SSH sulla porta 12345.

Il -а -в -е --делете gli interruttori sono alcuni dei più basilari e comunemente usati; dovresti già sapere molto su di loro se stai leggendo questo tutorial. Esaminiamo alcune altre opzioni che a volte vengono ignorate ma incredibilmente utili:

--progresso - Questa opzione ci consente di vedere l'avanzamento del trasferimento di ogni file. È particolarmente utile quando si trasferiscono file di grandi dimensioni su Internet, ma può produrre una quantità insensata di informazioni quando si trasferiscono solo file di piccole dimensioni su una rete veloce.

Un comando rsync con l'estensione --progresso passare mentre è in corso un backup:

--parziale - Questa è un'altra opzione particolarmente utile quando si trasferiscono file di grandi dimensioni su Internet. Se rsync viene interrotto per qualsiasi motivo durante un trasferimento di file, il file parzialmente trasferito viene mantenuto nella directory di destinazione e il trasferimento riprende dal punto in cui era stato interrotto una volta eseguito nuovamente il comando rsync. Quando si trasferiscono file di grandi dimensioni su Internet (ad esempio, un paio di gigabyte), non c'è niente di peggio che avere qualche secondo di interruzione di Internet, schermata blu o errore umano che blocca il trasferimento dei file e dover ricominciare tutto da capo.

-P - questo interruttore combina --progresso e --parziale , quindi usalo invece e renderà il tuo comando rsync un po 'più ordinato.

-con o --comprimere - Questa opzione farà in modo che rsync comprimi i dati del file durante il trasferimento, riducendo la quantità di dati che devono essere inviati alla destinazione. In realtà è uno switch abbastanza comune ma è tutt'altro che essenziale, ti avvantaggia solo sui trasferimenti tra connessioni lente e non fa nulla per i seguenti tipi di file: 7z, avi, bz2, deb, g, z iso, jpeg, jpg, mov, mp3, mp4, ogg, rpm, tbz, tgz, z, zip.

-h o --leggibile dagli umani - Se utilizzi il --progresso switch, vorrai sicuramente usare anche questo. Cioè, a meno che tu non voglia convertire i byte in megabyte al volo. Il -h switch converte tutti i numeri in uscita in un formato leggibile, in modo da poter effettivamente dare un senso alla quantità di dati trasferiti.

-n o --funzionamento a secco - Questa opzione è essenziale per sapere quando stai scrivendo per la prima volta il tuo script rsync e lo provi. Esegue una corsa di prova ma in realtà non apporta alcuna modifica: le modifiche potenziali vengono comunque emesse normalmente, quindi puoi leggere tutto e assicurarti che sia a posto prima di portare lo script in produzione.

-R o --relative - Questa opzione deve essere utilizzata se la directory di destinazione non esiste già. Useremo questa opzione più avanti in questa guida in modo da poter creare directory sulla macchina di destinazione con timestamp nei nomi delle cartelle.

--exclude-from - Questa opzione viene utilizzata per collegarsi a un elenco di esclusione contenente percorsi di directory di cui non si desidera eseguire il backup. Ha solo bisogno di un file di testo semplice con una directory o un percorso di file su ogni riga.

--include-from - Simile a --exclude-from , ma si collega a un file che contiene directory e percorsi di file di dati di cui si desidera eseguire il backup.

--stats - Non è proprio un passaggio importante in alcun modo, ma se sei un amministratore di sistema, può essere utile conoscere le statistiche dettagliate di ogni backup, solo così puoi monitorare la quantità di traffico inviato sulla tua rete e simili.

--log-file - Questo ti consente di inviare l'output di rsync a un file di registro. Lo consigliamo vivamente per i backup automatici in cui non sei lì per leggere da solo l'output. Dai sempre una volta i file di registro nel tuo tempo libero per assicurarti che tutto funzioni correttamente. Inoltre, è un passaggio cruciale da utilizzare per un amministratore di sistema, quindi non ti chiederai come siano falliti i tuoi backup mentre hai lasciato lo stagista in carica.

Diamo un'occhiata al nostro comando rsync ora che abbiamo aggiunto alcune altre opzioni:

rsync -avzhP --delete --stats --log-file = / home / geek / rsynclogs / backup.log --exclude-from '/home/geek/exclude.txt' -e 'ssh -p 12345' / home / geek / files / [email protected]: / home / geek2 / files /

Il comando è ancora piuttosto semplice, ma non abbiamo ancora creato una soluzione di backup decente. Anche se i nostri file si trovano ora in due posizioni fisiche diverse, questo backup non fa nulla per proteggerci da una delle principali cause di perdita di dati: l'errore umano.

Backup di istantanee

Se elimini accidentalmente un file, un virus corrompe uno qualsiasi dei tuoi file o accade qualcos'altro per cui i tuoi file vengono alterati in modo indesiderato, e quindi esegui lo script di backup rsync, i dati di backup vengono sovrascritti con le modifiche indesiderate. Quando si verifica una cosa del genere (non se, ma quando), la soluzione di backup non ha fatto nulla per proteggerti dalla perdita di dati.

Il creatore di rsync lo ha capito e ha aggiunto il file --backup e --backup-dir argomenti in modo che gli utenti possano eseguire backup differenziali. Il vero primo esempio sul sito web di rsync mostra uno script in cui viene eseguito un backup completo ogni sette giorni, quindi il backup delle modifiche a quei file viene eseguito quotidianamente in directory separate. Il problema con questo metodo è che per recuperare i tuoi file, devi recuperarli efficacemente sette volte diverse. Inoltre, la maggior parte dei geek esegue i backup più volte al giorno, quindi potresti facilmente avere più di 20 directory di backup diverse in un dato momento. Non solo recuperare i file ora è un problema, ma anche solo guardare i dati di backup può richiedere molto tempo: dovresti sapere l'ultima volta che un file è stato modificato per trovare la sua copia di backup più recente. Inoltre, è inefficiente eseguire solo backup incrementali settimanali (o anche meno spesso in alcuni casi).

Backup di istantanee in soccorso! I backup di istantanee non sono altro che backup incrementali, ma utilizzano collegamenti fisici per mantenere la struttura dei file dell'origine originale. All'inizio potrebbe essere difficile capirlo, quindi diamo un'occhiata a un esempio.

Facciamo finta di avere uno script di backup in esecuzione che esegue automaticamente il backup dei nostri dati ogni due ore. Ogni volta che rsync esegue questa operazione, denomina ogni backup nel formato: Backup-mese-giorno-anno-ora.

Quindi, alla fine di una giornata tipo, avremmo un elenco di cartelle nella nostra directory di destinazione come questo:

Quando attraversi una di queste directory, vedrai tutti i file dalla directory di origine esattamente come erano in quel momento. Tuttavia, non ci sarebbero duplicati su due directory. rsync realizza questo con l'uso di hardlinking attraverso il --link-dest = DIR discussione.

Ovviamente, per avere questi nomi di directory ben datati, dovremo rinforzare un po 'il nostro script rsync. Diamo un'occhiata a cosa sarebbe necessario per realizzare una soluzione di backup come questa, quindi spiegheremo lo script in modo più dettagliato:

#! / Bin / Bash

#copia il vecchio time.txt in time2.txt

si | cp ~ / backup / time.txt ~ / backup / time2.txt

#soverwrite old time.txt file with new time

echo `date +”% F-% I% p ”`> ~ / backup / time.txt

# crea il file di registro

echo “”> ~ / backup / rsync-`date + ”% F-% I% p” `.log

Comando #rsync

rsync -avzhPR --chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r --delete --stats --log-file = ~ / backup / rsync-`date + ”% F-% I% p ”` .log --exclude-from '~ / exclude.txt' --link-dest = / home / geek2 / files / `cat ~ / backup / time2.txt` -e 'ssh -p 12345' / home / geek / files / [email protected]: / home / geek2 / files / `date +”% F-% I% p ”` /

# non dimenticare di scp il file di log e di inserirlo nel backup

scp -P 12345 ~ / backup / rsync-`cat ~ / backup / time.txt`.log [email protected]: / home / geek2 / files / `cat ~ / backup / time.txt` / rsync-`cat ~ / backup / time.txt`.log

Sarebbe un tipico script rsync di snapshot. Nel caso ti perdessimo da qualche parte, analizziamolo pezzo per pezzo:

La prima riga del nostro script copia il contenuto di time.txt in time2.txt. La pipe sì è per confermare che si desidera sovrascrivere il file. Successivamente, prendiamo l'ora corrente e la inseriamo in time.txt. Questi file torneranno utili in seguito.

La riga successiva crea il file di registro rsync, denominandolo rsync-date.log (dove date è la data e l'ora effettive).

Ora, il complesso comando rsync di cui ti abbiamo avvertito:

-avzhPR, -e, --delete, --stats, --log-file, --exclude-from, --link-dest - Solo gli interruttori di cui abbiamo parlato prima; scorri verso l'alto se hai bisogno di un ripasso.

--- ch è anche d = zu = rwx, D go = rx, fu = rw, F go = r - Queste sono le autorizzazioni per la directory di destinazione. Poiché stiamo creando questa directory nel mezzo del nostro script rsync, dobbiamo specificare i permessi in modo che il nostro utente possa scrivere file su di essa.

L'uso dei comandi date e cat

Esamineremo ogni utilizzo dei comandi date e cat all'interno del comando rsync, nell'ordine in cui si verificano. Nota: siamo consapevoli che ci sono altri modi per ottenere questa funzionalità, specialmente con l'uso di dichiarazioni di variabili, ma ai fini di questa guida, abbiamo deciso di utilizzare questo metodo.

Il file di registro è specificato come:

~ / backup / rsync-`date + ”% F-% I% p” `.log

In alternativa, avremmo potuto specificarlo come:

~ / backup / rsync-`cat ~ / backup / time.txt`.log

Ad ogni modo, il file --log-file dovrebbe essere in grado di trovare il file di registro datato creato in precedenza e di scriverlo.

Il file di destinazione del collegamento è specificato come:

--link-dest = / home / geek2 / files / `cat ~ / backup / time2.txt`

Ciò significa che il file --link-dest al comando viene assegnata la directory del backup precedente. Se stiamo eseguendo backup ogni due ore ed sono le 16:00 al momento in cui abbiamo eseguito questo script, allora il file --link-dest Il comando cerca la directory creata alle 2:00 PM e trasferisce solo i dati che sono cambiati da allora (se presenti).

Per ribadire, questo è il motivo per cui time.txt viene copiato in time2.txt all'inizio dello script, quindi il --link-dest il comando può fare riferimento a quell'ora in un secondo momento.

La directory di destinazione è specificata come:

[email protected]: / home / geek2 / files / `date +”% F-% I% p ”`

Questo comando inserisce semplicemente i file di origine in una directory che ha il titolo della data e dell'ora correnti.

Infine, ci assicuriamo che una copia del file di registro sia posizionata all'interno del backup.

scp -P 12345 ~ / backup / rsync-`cat ~ / backup / time.txt`.log [email protected]: / home / geek2 / files / `cat ~ / backup / time.txt` / rsync-`cat ~ / backup / time.txt`.log

Usiamo la copia sicura sulla porta 12345 per prendere il registro di rsync e posizionarlo nella directory corretta. Per selezionare il file di registro corretto e assicurarsi che finisca nel posto giusto, è necessario fare riferimento al file time.txt tramite il comando cat. Se ti stai chiedendo perché abbiamo deciso di cat time.txt invece di usare solo il comando date, è perché potrebbe essere trascorso molto tempo mentre il comando rsync era in esecuzione, quindi per assicurarci di avere il momento giusto, ci limitiamo a cat il documento di testo che abbiamo creato in precedenza.

Automazione

Uso Cron su Linux o Utilità di pianificazione su Windows per automatizzare il tuo script rsync. Una cosa a cui devi stare attento è assicurarti di terminare tutti i processi rsync attualmente in esecuzione prima di continuarne uno nuovo. L'Utilità di pianificazione sembra chiudere automaticamente tutte le istanze già in esecuzione, ma per Linux dovrai essere un po 'più creativo.

La maggior parte delle distribuzioni Linux può utilizzare il comando pkill, quindi assicurati di aggiungere quanto segue all'inizio del tuo script rsync:

pkill -9 rsync

Crittografia

No, non abbiamo ancora finito. Finalmente abbiamo una fantastica (e gratuita!) Soluzione di backup, ma tutti i nostri file sono ancora suscettibili di furto. Si spera che tu stia eseguendo il backup dei tuoi file in qualche luogo a centinaia di chilometri di distanza. Non importa quanto sia sicuro quel luogo lontano, furto e pirateria informatica possono sempre essere problemi.

Nei nostri esempi, abbiamo incanalato tutto il nostro traffico rsync tramite SSH, in modo che tutti i nostri file vengano crittografati durante il transito verso la loro destinazione. Tuttavia, dobbiamo assicurarci che la destinazione sia altrettanto sicura. Tieni presente che rsync crittografa i tuoi dati solo mentre vengono trasferiti, ma i file sono completamente aperti una volta raggiunta la loro destinazione.

Una delle migliori caratteristiche di rsync è che trasferisce solo le modifiche in ogni file. Se hai tutti i tuoi file crittografati e apporti una piccola modifica, l'intero file dovrà essere ritrasmesso come risultato della crittografia, randomizzando completamente tutti i dati dopo ogni modifica.

Per questo motivo, è meglio / più semplice utilizzare alcuni tipi di crittografia del disco, come BitLocker per Windows o dm-crypt per Linux. In questo modo, i tuoi dati sono protetti in caso di furto, ma i file possono essere trasferiti con rsync e la tua crittografia non ne ostacolerà le prestazioni. Ci sono altre opzioni disponibili che funzionano in modo simile a rsync o addirittura implementano qualche forma di esso, come Duplicity, ma mancano di alcune delle funzionalità che rsync ha da offrire.

Dopo aver configurato i backup delle istantanee in una posizione fuori sede e crittografato i dischi rigidi di origine e di destinazione, concediti una pacca sulla spalla per padroneggiare rsync e implementare la soluzione di backup dei dati più infallibile possibile.

How To Automatically Backup Data On Linux Using "rsync"

Ubuntu Server 18.04 Administration Guide Part 14 - Transferring Files With Rsync

Rsync For Windows 10

How To Backup And Encrypt Data Using Rsync And VeraCrypt On MacOS (see Change Log)

Rsync Backup On Linux

How To Copy & Transfer Data From Netgear ReadyNAS To Another NAS [Backup Using RSync]


Privacy e sicurezza - Articoli più popolari

Le differenze tra Nest Protect di prima e seconda generazione

Privacy e sicurezza Aug 13, 2025

Il Nest Protect il rilevatore di fumo intelligente è alla sua seconda generazione e, se non sei sicuro di quale modello possiedi, ci sono alcune cose che puoi fare p..


Come recuperare la password di Steam dimenticata

Privacy e sicurezza Aug 3, 2025

CONTENUTO UNCACHED Usare un gestore di password conservare tutte le password complesse e difficili da ricordare è un ottimo modo per automatizzare il processo di a..


Come eliminare un dispositivo Trackr dal tuo account

Privacy e sicurezza Jun 23, 2025

CONTENUTO UNCACHED Trackr è un dispositivo Bluetooth delle dimensioni di un portachiavi puoi utilizzare per trovare le chiavi, il portafoglio o qualsiasi altra cosa c..


Novità di Creators Update di Windows 10

Privacy e sicurezza Jul 3, 2025

Windows 10 Creators Update, nome in codice Redstone 2, inizierà a essere distribuito l'11 aprile 2017. Come gli altri aggiornamenti a Windows 10 , è gratuito e incl..


Perché non dovresti ospitare una rete Wi-Fi aperta senza una password

Privacy e sicurezza Sep 26, 2025

Le reti Wi-Fi domestiche aperte sono ancora troppo comuni. La situazione è migliorata quando i produttori di router wireless hanno iniziato a spedire con password wireless abilitat..


Blocca lo spionaggio e il monitoraggio durante la navigazione con l'estensione Privacy Badger

Privacy e sicurezza Jul 23, 2025

CONTENUTO UNCACHED Se c'è una cosa di cui siamo tutti stanchi, è essere costantemente monitorati e spiati mentre navighiamo in Internet. Con questo in mente, la Electronic Front..


Sai quali siti e app hanno accesso al tuo account Google?

Privacy e sicurezza Feb 4, 2025

CONTENUTO UNCACHED Durante il nostro regolare controllo della sicurezza di tutti gli account collegati al sito HTG, abbiamo notato qualcosa di interessante: nelle impostazioni del..


Come riutilizzare il vecchio router Wi-Fi come switch di rete

Privacy e sicurezza Jul 5, 2025

Solo perché il tuo vecchio router Wi-Fi è stato sostituito da un modello più recente non significa che debba raccogliere polvere nell'armadio. Continua a leggere mentre ti mostri..


Categorie