Rsnapshot (gebaseerd op Rsync) - Een back-uphulpprogramma voor lokaal/extern bestandssysteem voor Linux
rsnapshot is een open source lokaal/extern back-upprogramma voor bestandssystemen, geschreven in de Perl-taal die de kracht van Rsync en SSH programma om geplande incrementele back-ups te maken van Linux/Unix bestandssystemen, terwijl ze slechts de ruimte in beslag nemen één enkele volledige back-up plus de verschillen en bewaar deze back-ups op een lokale schijf naar een andere harde schijf, een externe USB-stick , een NFS-gemounte schijf of gewoon via het netwerk naar een andere machine via SSH.
In dit artikel wordt gedemonstreerd hoe u rsnapshot installeert, instelt en gebruikt om incrementele per uur, dagelijks, wekelijks en < sterke>maandelijkse lokale back-ups, evenals externe back-ups. Om alle stappen in dit artikel uit te voeren, moet u een root-gebruiker zijn.
Stap 1: Rsnapshot Backup installeren onder Linux
De installatie van rsnapshot met Yum en APT kan enigszins afwijken als je Red Hat en gebruikt Op Debian gebaseerde distributies.
Op RHEL/CentOS
Eerst moet u een externe opslagplaats met de naam EPEL installeren en inschakelen. Volg onderstaande link om te installeren en in te schakelen onder uw RHEL/CentOS systemen. Fedora gebruikers hebben geen speciale repositoryconfiguraties nodig.
- Installeer en schakel EPEL Repository in RHEL/CentOS 6/5/4 in
Zodra u alles heeft ingesteld, installeert u rsnapshot vanaf de opdrachtregel, zoals weergegeven.
yum install rsnapshot
Op Debian/Ubuntu/Linux Mint
Standaard is rsnapshot opgenomen in de opslagplaatsen van Ubuntu, dus je kunt het installeren met de opdracht apt-get, zoals weergegeven.
apt-get install rsnapshot
Stap 2: SSH Wachtwoordloos inloggen instellen
Om een back-up te maken van externe Linux-servers kan uw rsnapshot back-upserver verbinding maken via SSH zonder wachtwoord. Om dit te bereiken, moet u een publieke en private SSH-sleutel maken om te authenticeren op de rsnapshot-server. Volg onderstaande link om openbare en privésleutels te genereren op uw rsnapshot back-upserver.
- Maak SSH-wachtwoordloze aanmelding aan met SSH Keygen
Stap 3: Rsnapshot configureren
Nu moet u enkele parameters bewerken en toevoegen aan het rsnapshot configuratiebestand. Open het bestand rsnapshot.conf met de vi- of nano-editor.
vi /etc/rsnapshot.conf
Maak vervolgens een back-upmap aan, waarin u al uw back-ups wilt opslaan. In mijn geval is de locatie van mijn back-upmap “/data/backup/”. Zoek en bewerk de volgende parameter om de back-uplocatie in te stellen.
snapshot_root /data/backup/
Verwijder ook de commentaartekens voor de regel “cmd_ssh” zodat u externe back-ups kunt maken via SSH. Om het commentaar op de regel te verwijderen, verwijdert u de “#” vóór de volgende regel, zodat rsnapshot uw gegevens veilig naar een back-upserver kan overbrengen.
cmd_ssh /usr/bin/ssh
Vervolgens moet u beslissen hoeveel oude back-ups u wilt behouden, omdat rsnapshot geen idee had hoe vaak u snapshots wilt maken. U moet opgeven hoeveel gegevens u wilt opslaan, intervallen toevoegen die u wilt behouden en hoeveel van elk.
Welnu, de standaardinstellingen zijn goed genoeg, maar toch zou ik graag willen dat u het “maandelijks”-interval inschakelt, zodat u ook back-ups voor de langere termijn kunt maken. Bewerk dit gedeelte zodat het er ongeveer hetzelfde uitziet als de onderstaande instellingen.
#########################################
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
Nog een ding dat u moet bewerken is de variabele “ssh_args”. Als u de standaard SSH-poort (22) heeft gewijzigd in iets anders, moet u dat poortnummer van uw externe back-upserver opgeven.
ssh_args -p 7851
Voeg ten slotte uw lokale en externe back-upmappen toe waarvan u een back-up wilt maken.
Maak een back-up van lokale mappen
Als u hebt besloten om lokaal een back-up van uw mappen op dezelfde machine te maken, ziet het back-upitem er als volgt uit. Ik maak bijvoorbeeld een back-up van mijn mappen /tecmint en /etc.
backup /tecmint/ localhost/
backup /etc/ localhost/
Maak een back-up van externe mappen
Als u een back-up wilt maken van de mappen van een externe server, moet u de rsnapshot vertellen waar de server zich bevindt en van welke mappen u een back-up wilt maken. Hier maak ik een back-up van de map “/home” van mijn externe server onder de map “/data/backup” op de rsnapshot-server.
backup [email :/home/ /data/backup/
Lees ook:
- Een back-up maken/synchroniseren van mappen met behulp van de Rsync-tool (Remote Sync).
- Bestanden/mappen overbrengen met behulp van de SCP-opdracht
Sluit bestanden en mappen uit
Hier ga ik alles uitsluiten en dan alleen specifiek definiëren waarvan ik een back-up wil maken. Om dit te doen, moet u een uitsluitingsbestand maken.
vi /data/backup/tecmint.exclude
Haal eerst de lijst met mappen op waarvan u een back-up wilt maken en voeg ( – * ) toe om al het andere uit te sluiten. Hiermee wordt alleen een back-up gemaakt van wat u in het bestand hebt vermeld. Mijn uitsluitingsbestand ziet er ongeveer zo uit als hieronder.
+ /boot
+ /data
+ /tecmint
+ /etc
+ /home
+ /opt
+ /root
+ /usr
- /usr/*
- /var/cache
+ /var
- /*
Het gebruik van de optie Bestand uitsluiten kan erg lastig zijn vanwege het gebruik van rsync recursie. Mijn bovenstaande voorbeeld is dus mogelijk niet wat u zoekt. Voeg vervolgens het uitsluitingsbestand toe aan het bestand rsnapshot.conf.
exclude_file /data/backup/tecmint.exclude
Eindelijk bent u bijna klaar met de initiële configuratie. Sla het configuratiebestand “/etc/rsnapshot.conf” op voordat u verder gaat. Er zijn veel opties om uit te leggen, maar hier is mijn voorbeeldconfiguratiebestand.
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/
Alle bovenstaande opties en argumentverklaringen zijn als volgt:
- config_version 1.2=Versie van configuratiebestand
- snapshot_root=Back-upbestemming om momentopnamen op te slaan
- cmd_cp=Pad naar kopieeropdracht
- cmd_rm=Pad om opdracht te verwijderen
- cmd_rsync=Pad naar rsync
- cmd_ssh=Pad naar SSH
- cmd_logger=Pad naar shell-opdrachtinterface naar syslog
- cmd_du=Pad naar opdracht voor schijfgebruik
- interval per uur=Hoeveel back-ups per uur moeten worden bewaard.
- interval dagelijks=Hoeveel dagelijkse back-ups er moeten worden bewaard.
- interval weekly=Hoeveel wekelijkse back-ups er moeten worden bewaard.
- interval maandelijks=Hoeveel maandelijkse back-ups er moeten worden bewaard.
- ssh_args=Optionele SSH-argumenten, zoals een andere poort (-p )
- verbose=spreekt voor zich
- loglevel=Spreekt voor zich
- logbestand=Pad naar logbestand
- exclude_file=Pad naar het uitsluitingsbestand (wordt gedetailleerder uitgelegd)
- rsync_long_args=Lange argumenten om door te geven aan rsync
- lockfile=Spreekt voor zich
- backup=Volledig pad naar waar een back-up van moet worden gemaakt, gevolgd door het relatieve plaatsingspad.
Stap 4: Controleer de Rsnapshot-configuratie
Zodra u klaar bent met uw volledige configuratie, is het tijd om te verifiëren dat alles werkt zoals verwacht. Voer de volgende opdracht uit om te controleren of uw configuratie de juiste syntaxis heeft.
rsnapshot configtest
Syntax OK
Als alles correct is geconfigureerd, ontvangt u het bericht “Syntaxis OK ”. Als u foutmeldingen krijgt, betekent dit dat u deze fouten moet corrigeren voordat u rsnapshot uitvoert.
Voer vervolgens een testrun uit op een van de momentopnamen om er zeker van te zijn dat we de juiste resultaten genereren. We gebruiken de parameter 'uurlijks' om een testrun uit te voeren met het argument -t (test). Dit onderstaande commando geeft een uitgebreide lijst weer van de dingen die het zal doen, zonder ze daadwerkelijk te doen.
rsnapshot -t hourly
Voorbeelduitvoer
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/
Opmerking: het bovenstaande commando vertelt rsnapshot om een “uurlijks” back-up te maken. Het drukt feitelijk de opdrachten af die het zal uitvoeren als we het echt uitvoeren.
Stap 5: Rsnapshot handmatig uitvoeren
Nadat u uw resultaten heeft geverifieerd, kunt u de optie “-t” verwijderen om de opdracht daadwerkelijk uit te voeren.
rsnapshot hourly
De bovenstaande opdracht voert het back-upscript uit met alle configuratie die we hebben toegevoegd aan het bestand rsnapshot.conf en maakt een map “backup” en maakt vervolgens de mapstructuur daaronder aan dat onze bestanden organiseert. Nadat u bovenstaande opdracht hebt uitgevoerd, kunt u de resultaten verifiëren door naar de back-upmap te gaan en de mapstructuur weer te geven met behulp van de opdracht ls -l, zoals weergegeven.
cd /data/backup
ls -l
total 4
drwxr-xr-x 3 root root 4096 Oct 28 09:11 hourly.0
Stap 6: Automatisering van het proces
Om het proces te automatiseren, moet je plannen dat rsnapshot met bepaalde tussenpozen vanuit Cron wordt uitgevoerd. Standaard wordt rsnapshot geleverd met een cron-bestand onder “/etc/cron.d/rsnapshot“, als dit niet bestaat, maak er dan een aan en voeg er de volgende regels aan toe.
Regels worden standaard voorzien van commentaar, dus u moet de “#” vóór het planningsgedeelte verwijderen om deze waarden in te schakelen.
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
Laat me precies uitleggen wat bovenstaande cron-regels doen:
- Wordt elke 4 uur uitgevoerd en maakt een elk uur directory onder de /backup directory.
- Wordt dagelijks uitgevoerd om 3:30 uur en maakt een dagelijks map aan onder de map /backup.
- Draait wekelijks op elke maandag om 3:00 uur en maakt een wekelijks map aan onder /backup sterke> map.
- Wordt elke maandelijks uitgevoerd om 2:30 uur en maakt een maandelijkse map aan onder de map /backup.
Om beter te begrijpen hoe cron-regels werken, raad ik u aan ons artikel te lezen waarin dit wordt beschreven.
- 11 Voorbeelden van Cron-planning
Stap 7: Rsnapshot-rapporten
De rsnapshot biedt een handig, klein rapportage-Perl-script dat u een e-mailwaarschuwing stuurt met alle details over wat er is gebeurd tijdens uw gegevensback-up. Om dit script in te stellen, moet u het script ergens onder “/usr/local/bin” kopiëren en het uitvoerbaar maken.
cp /usr/share/doc/rsnapshot-1.3.1/utils/rsnapreport.pl /usr/local/bin
chmod +x /usr/local/bin/rsnapreport.pl
Voeg vervolgens de parameter “–stats” toe aan uw bestand “rsnapshot.conf” aan de sectie met lange argumenten van rsync.
vi /etc/rsnapshot.conf
rsync_long_args --stats --delete --numeric-ids --delete-excluded
Bewerk nu de crontabregels die eerder zijn toegevoegd en roep het script rsnapreport.pl aan om de rapporten door te geven aan het opgegeven e-mailadres.
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
Zodra u bovenstaande gegevens correct heeft toegevoegd, ontvangt u een rapport op uw e-mailadres, vergelijkbaar met hieronder.
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
Referentiekoppelingen
- rsnapshot-startpagina
Dat is het voor nu. Als er problemen optreden tijdens de installatie, stuur me dan een reactie. Houd tot die tijd TecMint in de gaten voor meer interessante artikelen over de open source-wereld.