Rsnapshot (basato su Rsync): un'utilità di backup del file system locale/remoto per Linux
rsnapshot è un'utilità di backup del file system locale/remoto open source, scritta in linguaggio Perl che sfrutta la potenza di rsnapshotRsync e SSH per creare backup incrementali programmati di filesystem Linux/Unix, occupando solo lo spazio di un singolo backup completo più le differenze e conservare tali backup su un disco locale su diversi dischi rigidi, una chiavetta USB esterna , un'unità montata su NFS o semplicemente in rete su un altro computer tramite SSH.
Questo articolo mostrerà come installare, configurare e utilizzare rsnapshot per creare incrementali oraria, giornaliera, settimanale e < backup localimensili e backup remoti. Per eseguire tutti i passaggi descritti in questo articolo, devi essere un utente root.
Passaggio 1: installazione di Rsnapshot Backup in Linux
L'installazione di rsnapshot utilizzando Yum e APT potrebbe differire leggermente se utilizzi Red Hat e Distribuzioni basate su Debian.
Su RHEL/CentOS
Per prima cosa dovrai installare e abilitare un repository di terze parti chiamato EPEL. Segui il collegamento seguente per installare e abilitare nei tuoi sistemi RHEL/CentOS. Gli utenti Fedora non richiedono alcuna configurazione speciale del repository.
- Installa e abilita il repository EPEL in RHEL/CentOS 6/5/4
Una volta completata la configurazione, installa rsnapshot dalla riga di comando come mostrato.
yum install rsnapshot
Su Debian/Ubuntu/Linux Mint
Per impostazione predefinita, rsnapshot è incluso nei repository di Ubuntu, quindi puoi installarlo utilizzando il comando apt-get come mostrato.
apt-get install rsnapshot
Passaggio 2: configurazione dell'accesso senza password SSH
Per eseguire il backup di server Linux remoti, il tuo server di backup rsnapshot sarà in grado di connettersi tramite SSH senza password. Per fare ciò, dovrai creare una chiave pubblica e privata SSH per autenticarti sul server rsnapshot. Segui il collegamento seguente per generare chiavi pubbliche e private sul tuo server di backup rsnapshot.
- Crea un accesso senza password SSH utilizzando SSH Keygen
Passaggio 3: configurazione di Rsnapshot
Ora dovrai modificare e aggiungere alcuni parametri al file di configurazione rsnapshot. Apri il file rsnapshot.conf con l'editor vi o nano.
vi /etc/rsnapshot.conf
Successivamente crea una directory di backup in cui desideri archiviare tutti i tuoi backup. Nel mio caso la posizione della directory di backup è "/data/backup/". Cerca e modifica il seguente parametro per impostare la posizione di backup.
snapshot_root /data/backup/
Elimina anche il commento dalla riga "cmd_ssh" per consentire l'esecuzione di backup remoti su SSH. Per rimuovere il commento dalla riga rimuovi il "#" davanti alla riga seguente in modo che rsnapshot possa trasferire in modo sicuro i tuoi dati su un server di backup.
cmd_ssh /usr/bin/ssh
Successivamente, devi decidere quanti vecchi backup desideri conservare, perché rsnapshot non aveva idea della frequenza con cui desideri acquisire istantanee. È necessario specificare la quantità di dati da salvare, aggiungere intervalli da conservare e quanti di ciascuno.
Bene, le impostazioni predefinite sono abbastanza buone, ma vorrei comunque che tu abilitassi l'intervallo "mensile" in modo da poter avere anche backup a lungo termine. Modifica questa sezione in modo che sia simile alle impostazioni seguenti.
#########################################
BACKUP INTERVALS #
Must be unique and in ascending order #
i.e. hourly, daily, weekly, etc. #
#########################################
interval hourly 6
interval daily 7
interval weekly 4
interval monthly 3
Un'altra cosa che devi modificare è la variabile "ssh_args". Se hai modificato la porta SSH predefinita (22) con qualcos'altro, devi specificare il numero di porta del server di backup remoto.
ssh_args -p 7851
Infine, aggiungi le directory di backup locali e remote di cui desideri eseguire il backup.
Backup delle directory locali
Se hai deciso di eseguire il backup delle tue directory localmente sullo stesso computer, la voce di backup sarà simile a questa. Ad esempio, sto eseguendo il backup delle mie directory /tecmint e /etc.
backup /tecmint/ localhost/
backup /etc/ localhost/
Backup di directory remote
Se desideri eseguire il backup delle directory di un server remoto, devi indicare a rsnapshot dove si trova il server e di quali directory desideri eseguire il backup. Qui sto eseguendo un backup della directory "/home" del mio server remoto nella directory "/data/backup" sul server rsnapshot.
backup [email :/home/ /data/backup/
Leggi anche:
- Come eseguire il backup/sincronizzazione delle directory utilizzando lo strumento Rsync (sincronizzazione remota).
- Come trasferire file/cartelle utilizzando il comando SCP
Escludi file e directory
Qui escluderò tutto e poi definirò specificamente solo ciò di cui voglio eseguire il backup. Per fare ciò, è necessario creare un file di esclusione.
vi /data/backup/tecmint.exclude
Per prima cosa ottieni l'elenco delle directory di cui desideri eseguire il backup e aggiungi ( – *) per escludere tutto il resto. Questo eseguirà il backup solo di ciò che hai elencato nel file. Il mio file di esclusione è simile al seguente.
+ /boot
+ /data
+ /tecmint
+ /etc
+ /home
+ /opt
+ /root
+ /usr
- /usr/*
- /var/cache
+ /var
- /*
Usare l'opzione di esclusione file può essere molto complicato a causa dell'uso della ricorsione rsync. Quindi, il mio esempio sopra potrebbe non essere quello che stai cercando. Successivamente aggiungi il file di esclusione al file rsnapshot.conf.
exclude_file /data/backup/tecmint.exclude
Finalmente hai quasi finito con la configurazione iniziale. Salva il file di configurazione "/etc/rsnapshot.conf" prima di procedere ulteriormente. Ci sono molte opzioni da spiegare, ma ecco il mio file di configurazione di esempio.
config_version 1.2
snapshot_root /data/backup/
cmd_cp /bin/cp
cmd_rm /bin/rm
cmd_rsync /usr/bin/rsync
cmd_ssh /usr/bin/ssh
cmd_logger /usr/bin/logger
cmd_du /usr/bin/du
interval hourly 6
interval daily 7
interval weekly 4
interval monthly 3
ssh_args -p 25000
verbose 2
loglevel 4
logfile /var/log/rsnapshot/
exclude_file /data/backup/tecmint.exclude
rsync_long_args --delete --numeric-ids --delete-excluded
lockfile /var/run/rsnapshot.pid
backup /tecmint/ localhost/
backup /etc/ localhost/
backup [email :/home/ /data/backup/
Tutte le opzioni di cui sopra e le spiegazioni degli argomenti sono le seguenti:
- config_version 1.2=Versione del file di configurazione
- snapshot_root=Destinazione di backup per archiviare le istantanee
- cmd_cp=Percorso per copiare il comando
- cmd_rm=Percorso per rimuovere il comando
- cmd_rsync=Percorso per la sincronizzazione
- cmd_ssh=Percorso verso SSH
- cmd_logger=Percorso dell'interfaccia dei comandi della shell per syslog
- cmd_du=Percorso del comando di utilizzo del disco
- intervallo orario=Quanti backup orari conservare.
- intervallo giornaliero=Quanti backup giornalieri conservare.
- intervallo settimanale=quanti backup settimanali conservare.
- intervallo mensile=Quanti backup mensili conservare.
- ssh_args=Argomenti SSH facoltativi, come una porta diversa (-p )
- verboso=autoesplicativo
- loglevel=autoesplicativo
- logfile=Percorso del file di registro
- exclude_file=Percorso del file di esclusione (verrà spiegato più dettagliatamente)
- rsync_long_args=Argomenti lunghi da passare a rsync
- lockfile=autoesplicativo
- backup=percorso completo degli elementi di cui eseguire il backup seguito dal relativo percorso di posizionamento.
Passaggio 4: verificare la configurazione di Rsnapshot
Una volta terminata l'intera configurazione, è il momento di verificare che tutto funzioni come previsto. Esegui il comando seguente per verificare che la configurazione abbia la sintassi corretta.
rsnapshot configtest
Syntax OK
Se tutto è configurato correttamente, riceverai un messaggio "Sintassi OK". Se ricevi messaggi di errore, significa che devi correggere tali errori prima di eseguire rsnapshot.
Successivamente, esegui un test su uno degli snapshot per assicurarti di generare risultati corretti. Prendiamo il parametro "orario" per eseguire un test utilizzando l'argomento -t (test). Questo comando seguente mostrerà un elenco dettagliato delle cose che farà, senza farle effettivamente.
rsnapshot -t hourly
Uscita del campione
echo 2028 > /var/run/rsnapshot.pid
mkdir -m 0700 -p /data/backup/
mkdir -m 0755 -p /data/backup/hourly.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /home \
/backup/hourly.0/localhost/
mkdir -m 0755 -p /backup/hourly.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /etc \
/backup/hourly.0/localhost/
mkdir -m 0755 -p /data/backup/hourly.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
/usr/local /data/backup/hourly.0/localhost/
touch /data/backup/hourly.0/
Nota: il comando precedente indica arsnapshot di creare un backup "orario". In realtà stampa i comandi che eseguirà quando lo eseguiremo realmente.
Passaggio 5: esecuzione manuale di Rsnapshot
Dopo aver verificato i risultati, puoi rimuovere l'opzione “-t” per eseguire realmente il comando.
rsnapshot hourly
Il comando precedente eseguirà lo script di backup con tutta la configurazione che abbiamo aggiunto nel file rsnapshot.conf e creerà una directory "backup" e quindi creerà la struttura di directory sotto di essa che organizza i nostri file. Dopo aver eseguito il comando precedente, puoi verificare i risultati andando alla directory di backup ed elencare la struttura della directory utilizzando il comando ls -l come mostrato.
cd /data/backup
ls -l
total 4
drwxr-xr-x 3 root root 4096 Oct 28 09:11 hourly.0
Passaggio 6: automatizzazione del processo
Per automatizzare il processo, è necessario pianificare l'esecuzione di rsnapshot a determinati intervalli da Cron. Per impostazione predefinita, rsnapshot viene fornito con il file cron in "/etc/cron.d/rsnapshot", se non esiste creane uno e aggiungi le seguenti righe.
Per impostazione predefinita le regole sono commentate, quindi è necessario rimuovere il "#" davanti alla sezione di pianificazione per abilitare questi valori.
This is a sample cron file for rsnapshot.
The values used correspond to the examples in /etc/rsnapshot.conf.
There you can also set the backup points and many other things.
#
To activate this cron file you have to uncomment the lines below.
Feel free to adapt it to your needs.
0 */4 * * * root /usr/bin/rsnapshot hourly
30 3 * * * root /usr/bin/rsnapshot daily
0 3 * * 1 root /usr/bin/rsnapshot weekly
30 2 1 * * root /usr/bin/rsnapshot monthly
Lasciami spiegare esattamente cosa fanno le regole cron di cui sopra:
- Viene eseguito ogni 4 ore e crea una directory ogni ora nella directory /backup.
- Viene eseguito ogni giorno alle 3:30 e crea una directory daily nella directory /backup.
- Viene eseguito ogni settimana ogni lunedì alle 3:00 e crea una directory settimanale in /backup directory forte>.
- Viene eseguito ogni mensile alle 2:30 e crea una directory mensile nella directory /backup.
Per capire meglio come funzionano le regole cron, ti suggerisco di leggere il nostro articolo che descrive.
- 11 Esempi di pianificazione Cron
Passaggio 7: rapporti Rsnapshot
L'rsnapshot fornisce un piccolo ed elegante script Perl di reporting che ti invia un avviso email con tutti i dettagli su ciò che è accaduto durante il backup dei dati. Per impostare questo script, devi copiarlo da qualche parte in "/usr/local/bin" e renderlo eseguibile.
cp /usr/share/doc/rsnapshot-1.3.1/utils/rsnapreport.pl /usr/local/bin
chmod +x /usr/local/bin/rsnapreport.pl
Successivamente, aggiungi il parametro "–stats" nel tuo file "rsnapshot.conf" alla sezione degli argomenti lunghi di rsync.
vi /etc/rsnapshot.conf
rsync_long_args --stats --delete --numeric-ids --delete-excluded
Ora modifica le regole crontab aggiunte in precedenza e chiama lo script rsnapreport.pl per passare i report all'indirizzo email specificato.
This is a sample cron file for rsnapshot.
The values used correspond to the examples in /etc/rsnapshot.conf.
There you can also set the backup points and many other things.
#
To activate this cron file you have to uncomment the lines below.
Feel free to adapt it to your needs.
0 */4 * * * root /usr/bin/rsnapshot hourly 2>&1 | \/usr/local/bin/rsnapreport.pl | mail -s "Hourly Backup" [email
30 3 * * * root /usr/bin/rsnapshot daily 2>&1 | \/usr/local/bin/rsnapreport.pl | mail -s "Daily Backup" [email
0 3 * * 1 root /usr/bin/rsnapshot weekly 2>&1 | \/usr/local/bin/rsnapreport.pl | mail -s "Weekly Backup" [email
30 2 1 * * root /usr/bin/rsnapshot monthly 2>&1 | \/usr/local/bin/rsnapreport.pl | mail -s "Montly Backup" [email
Una volta aggiunte correttamente le voci sopra, riceverai un rapporto al tuo indirizzo e-mail simile a quello riportato di seguito.
SOURCE TOTAL FILES FILES TRANS TOTAL MB MB TRANS LIST GEN TIME FILE XFER TIME
--------------------------------------------------------------------------------------------------------
localhost/ 185734 11853 2889.45 6179.18 40.661 second 0.000 seconds
Collegamenti di riferimento
- home page di rsnapshot
Per ora è tutto, se si verificano problemi durante l'installazione, lasciami un commento. Fino ad allora restate sintonizzati su TecMint per articoli più interessanti sul mondo Open source.