Zoeken op website

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.

  1. 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.

  1. 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:

  1. Een back-up maken/synchroniseren van mappen met behulp van de Rsync-tool (Remote Sync).
  2. 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:

  1. config_version 1.2=Versie van configuratiebestand
  2. snapshot_root=Back-upbestemming om momentopnamen op te slaan
  3. cmd_cp=Pad naar kopieeropdracht
  4. cmd_rm=Pad om opdracht te verwijderen
  5. cmd_rsync=Pad naar rsync
  6. cmd_ssh=Pad naar SSH
  7. cmd_logger=Pad naar shell-opdrachtinterface naar syslog
  8. cmd_du=Pad naar opdracht voor schijfgebruik
  9. interval per uur=Hoeveel back-ups per uur moeten worden bewaard.
  10. interval dagelijks=Hoeveel dagelijkse back-ups er moeten worden bewaard.
  11. interval weekly=Hoeveel wekelijkse back-ups er moeten worden bewaard.
  12. interval maandelijks=Hoeveel maandelijkse back-ups er moeten worden bewaard.
  13. ssh_args=Optionele SSH-argumenten, zoals een andere poort (-p )
  14. verbose=spreekt voor zich
  15. loglevel=Spreekt voor zich
  16. logbestand=Pad naar logbestand
  17. exclude_file=Pad naar het uitsluitingsbestand (wordt gedetailleerder uitgelegd)
  18. rsync_long_args=Lange argumenten om door te geven aan rsync
  19. lockfile=Spreekt voor zich
  20. 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:

  1. Wordt elke 4 uur uitgevoerd en maakt een elk uur directory onder de /backup directory.
  2. Wordt dagelijks uitgevoerd om 3:30 uur en maakt een dagelijks map aan onder de map /backup.
  3. Draait wekelijks op elke maandag om 3:00 uur en maakt een wekelijks map aan onder /backup sterke> map.
  4. 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.

  1. 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

  1. 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.