Fare backup con Rsync


2 Feb 2022 - Informatica, Software


Fare backup con Rsync

Utilizziamo Rsync per fare i nostri backup in modo efficiente, sicuro e comodo con questo potente tool per linux

Linux come abbiamo visto anche in precedenza è uno strumento davvero potentissimo. In questo articolo voglio parlarti di questo tool chiamato rsync per poter fare backup.
Inoltre per rendere la cosa più interessante scriveremo uno script per programmare i backup con i file timer di systemd.
Non mi soffermerò sui concetti di systemd, dove qui trovi comunque un articolo in cui ne parlo, scripting in bash, clicca qui per maggiori informazioni, e cose del genere.
Darò per scontato che tu sia già smaliziato con questi concetti. Non dico esperto perchè immagino che un esperto gliene pò fregà de meno di questo articolo…e ci sta!
Ma così è come faccio io e mi piaceva condividere questa cosa. Se sei già bravo spero almeno di intrattenerti un pochino.
Comunque sia detta in maniera semplicistica al massimo systemd è un demone che gestisce i processi in ambienti linux e lo scripting bash è un modo, gli esperti mi lascino passare il termine, “dinamico” di lanciare comandi.
Combinando le due cose è possibile tirare fuori un sistema per fare backup “dinamici” su server linux.
C’è un secondo articolo dove vediamo come inviare notifiche tramite posta elettronica dell’avvenuto successo o insuccesso del processo.
Ti piace l’idea?
E proviamo!

Indice

Fare backup con Rsync: Preliminari


Ti consiglio sempre prima di testare tutto quanto con qualche macchina virtuale, Vitual Box, VM Ware, vedi te…

Tira su un serverino virtuale e divertiti!!!

Prima di iniziare è opportuno installare sulle macchine i due hard disk e cosa importante formattarli con lo stesso filesystem. Altrimenti il programma potrebbe dare un errore con codice 23.
Il primo hard disk sarà quello di origine ed il secondo quello che manterrà i backup.

Ho già spiegato in questo articolo (https://www.giustinoromano.it/2021/10/13/mount-automatico-server-linux/) come fare per lasciare al sistema il compito di montare automaticamente i dischi all’avvio della macchina.

In seguito è necessario installare Rsync.
Dovrebbe essere già presente nelle moderne distro RedHat o Debian in caso contrario per gli amici RedHat:

sudo yum install rsync

Per quelli Debian:

sudo apt-get install rsync

Naturalmente tutto con privilegi di super utente.

La sintassi del tool è molto semplice ed intuitiva.

rsync -options <cartella_di_cui_fare_la_copia> <cartella_di_backup_duplicata>

Puoi ovviamente trovare tutta la descrizione del comando digitando:

man rsync

Vediamo però insieme le varie opzioni:

-v significa verbose, avremo più informazioni a schermo

-r significa recursive, con questa opzione rsync leggerà nelle cartelle

-h trasforma in byte in un formato più leggibile (es. Mb, Gb)

-a significa archive. Questa modalità corrisponde a scrivere -rlptgoD e riporta tutte le condizioni originali del file dalla destinazione alla sorgente come timestamp, link simbolici, permessi, proprietario e gruppo

-z comprime i dati trasmessi

--delete cancella sulla destinazione i file non presenti nella sorgente

--exclude quali file o directory ignorare

--progress mostra a schermo il trasferimento dei file

-u imposta che i file presenti in destinazione più nuovi di quelli contenuti in sorgente vengano ignorati

Dunque il comando sarà più o meno simile a questo:

rsync -zvrah /home/utente/cartella1 /home/utente/cartella2

Ovviamente in cartella1 sarà montato il primo hard disk ed in cartella2 il secondo, quello che ospiterà i backup per intenderci.

Prima di lanciare il comando consiglierei di fare una prova. Questo tool ci consente di fare anche questo con:

rsync -vrah --dry-run /home/utente/cartella1 /home/utente/cartella2

Per rigor di cronaca è possibile anche inviare i dati attraverso una sessione remota ad esempio:

rsync -vrahe ssh /home/utente/cartella1 [email protected]:/var/backup/cartella2

Ma questo non è il nostro caso. Noi vogliamo mantenere tutto sul nostro server locale.

Ti lascio comunque la documentazione se vuoi approfondire : https://linux.die.net/man/1/rsync

Lo script: Scriviamo lo Script Bash per controllare il tool


Per far in modo che il comando venga richiamato anche in “background” da systemd dobbiamo creare uno script file Bash con il comando all’interno.

Ti basterà aprire un editor con nano o con vim e salvare quanto segue in un file chiamato scriptbackup.sh.
Ricordati il path di questo file che dopo ti servirà.
Puoi chiamarlo come vuoi l’importante è l’estensione “.sh“.

#!/bin/bash
rsync -zvrah /home/utente/cartella1 /home/utente/cartella2
exit 0

Adesso se scrivessi nel terminale

./scriptbackup.sh

lancerei lo script e di conseguenza il comando contenuto in esso.
Ci tornerà utile per la configurazione del file systemd.

Dinamiciziamo tutto: systemd e i file service e timer


Un file di configurazione di systemd finisce con estensione .service e vengono chiamate unità di servizio.
Detta in maniera essenzialista è il file che permette a systemd di capire cosa deve fare e che comandi lanciare.
Gli daremo in pasto il file .sh creato in precedenza.
I file .timer sono dei file che permettono a systemd di triggerare il service in una determinata ora.
Per maggiori informazioni su come scrivere per bene un file timer con tutte le dovute opzioni (“avvia il servizio tutti i giorni tranne i venerdì che cadono il 17 del mese che porta sfiga e non sia mai si blocca tutto che poi mi sale il kitemmuorto molesto all’amministratore di sistema e non è bello” ecc ecc ecc…) clicca di seguito : https://wiki.archlinux.org/title/Systemd/Timers

Vediamo dunque i due file che devi salvare in /lib/systemd/system e chiamarli uno come_ti_pare.service e l’altro per coerenza io lo chiamo con lo stesso nome ma .timer.

[Unit]
Description=File service che lancia lo script di backup
[Service]
ExecStart=/il/path/del/file.sh
[Install]
WantedBy=multi-user.target

Facendo caso volessimo fargli fare i backup ogni venerdi a mezzanotte (ce ne frega niente che cade di venerdì…noi siamo sistemisti e siamo coraggiosi!!!) sarà come segue.

[Unit]
Description=Timer del file service
Requires=il_fileservice_che_hai_creato_prima.service
[Timer]
Unit=il_fileservice_che_hai_creato_prima.service
OnCalendar=Fri 11:00:00
[Install]
WantedBy=timers.target

Ricordati che in Requires ed in Unit di inserire il nome del file service che hai creato in precedenza.
In sostanza stai dicendo al timer lancia questo service a quest’ora.
OnCalendar è il parametro che prende in carico il tempo. Il giorno si scrive in inglese (le prime tre lettere) l’orario HH:MM:SS (ore:minuti:secondi).
https://wiki.archlinux.org/title/Systemd/Timers per maggiori dettagli.

Avviamo i servizi e concludiamo: avviamo e controlliamo i log


Non ti resta che salvare questo file con estensione .timer e abilitare i due servizi con:

systemctl enable /lib/systemd/system/il_file_che_hai_creato_prima.service
systemctl enable /lib/systemd/system/il_file_che_hai_creato_prima.timer
systemctl start il_file_che_hai_creato_prima.service
systemctl start il_file_che_hai_creato_prima.timer

Se vuoi vedere se il tutto è funzionante puoi dare uno:

systemctl status il_file_che_hai_creato_prima.service
systemctl status il_file_che_hai_creato_prima.timer

oppure un:

journalctl status il_file_che_hai_creato_prima.service
journalctl status il_file_che_hai_creato_prima.timer

L’output del .timer presenterà una voce chiamata trigger che indica il giorno e l’ora di quando sarà lanciato il servizio come ad esempio : (immagine presa dal web)

Fare backup con rsync

Spero che questo articolo ti sia piaciuto, se sei un esperto e hai qualche consiglio in più da darmi fammelo sapere qui sotto nei commenti e lo stesso se sei tra quelli che erano alla ricerca di un modo per fare backup e ti sei imbattuto in questo articolo.
Ti ringrazio di avermi seguito fino a qui.

GiustinoRomano.IT – I do IT with my Heart.




Lascia un commento

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

Translate Me



Contatti


         

About Me








Sono Giustino Romano, un "IT specialist" e "Web Developer" con una forte passione per il mondo digitale. Sviluppo siti web ed offro ai miei partner servizi di assistenza informatica. Li accompagno nel mondo digitale e li supporto dai semplici problemi quotidiani di connessione fino ad articolate infrastrutture informatiche dando loro visibilità sul web e risalto alla loro identità digitale.
Clicca sul link e scopri di più




Annunci




Leggi anche...