automatische backups instellen op linux
Automatische Backups Instellen Op Linux
Automatische backups instellen op Linux
Dit artikel legt uit hoe je een geautomatiseerd backupsysteem op Linux opzet met cron of systemd, gericht op systeembeheerders die dataverlies willen voorkomen.
Vereisten
- Linux-distributie met systemd (≥219) of cron (Vixie cron ≥3.0 of cronie ≥1.5) - Root-toegang of sudo-rechten - Basiskennis van bash en bestandssystemen - rsync ≥3.1.0 (aanbevolen) of tar ≥1.27 - Pakketten installeren waar nodig: `sudo apt install rsync cron` (Debian/Ubuntu) of `sudo dnf install rsync cronie` (RHEL/Fedora)
Stappen
1. Bepaal wat je wilt backuppen en waar naartoe
Maak een lijst van kritieke directory's (bijv. `/home`, `/etc`, `/var/www`) en kies een externe opslaglocatie — een aparte schijf, NAS of externe server. Mount eventueel een netwerkshare:
``` sudo mount -t cifs //NAS-IP/backups /mnt/backups -o username=user,password=pass ```
2. Maak een backup-script
Creeër `/usr/local/bin/backup.sh` met rsync voor incrementele backups:
``` #!/bin/bash BACKUP_DIR="/mnt/backups/$(date +%Y-%m-%d)" SOURCE_DIRS="/home /etc /var/www" LOGFILE="/var/log/backup.log"
mkdir -p "$BACKUP_DIR" for dir in $SOURCE_DIRS; do rsync -avh --delete "$dir" "$BACKUP_DIR" >> "$LOGFILE" 2>&1 done ```
Maak het uitvoerbaar: `sudo chmod +x /usr/local/bin/backup.sh`.
3. Plan de backup met cron
Open de crontab voor root: `sudo crontab -e`. Voeg een regel toe om dagelijks om 2 uur 's nachts te draaien:
``` 0 2 * /usr/local/bin/backup.sh ```
Voor wekelijkse backups op zondag om 3 uur: `0 3 0 /usr/local/bin/backup.sh`.
4. Of gebruik een systemd-timer
Maak `/etc/systemd/system/backup.service`:
``` [Unit] Description=Dagelijkse backup met rsync
[Service] Type=oneshot ExecStart=/usr/local/bin/backup.sh ```
Maak `/etc/systemd/system/backup.timer`:
``` [Unit] Description=Start backup dagelijks om 2 uur
[Timer] OnCalendar=daily Persistent=true
[Install] WantedBy=timers.target ```
Activeer de timer: `sudo systemctl enable --now backup.timer`.
5. Comprimeer met tar voor een enkel archief (optioneel)
Vervang de rsync-inhoud in backup.sh door:
``` tar -czf "$BACKUP_DIR/system-backup-$(date +%Y-%m-%d).tar.gz" /home /etc /var/www ```
6. Stel retentie in — verwijder oude backups
Voeg onderaan backup.sh toe om backups ouder dan 30 dagen te wissen:
``` find /mnt/backups -type d -mtime +30 -exec rm -rf {} \; 2>/dev/null ```
7. Test de backup handmatig
Voer het script eenmalig uit: `sudo /usr/local/bin/backup.sh`.
8. Controleer logs op fouten
``` sudo tail -f /var/log/backup.log ```
Verificatie
Controleer of de cron-job of timer actief is:
- Voor cron: `sudo crontab -l` toont de toegevoegde regel. - Voor systemd: `sudo systemctl status backup.timer` toont `active (waiting)`.
Voer een test-restore uit naar `/tmp/restore-test`:
``` mkdir /tmp/restore-test rsync -avh /mnt/backups/$(date +%Y-%m-%d)/home /tmp/restore-test/ ```
Controleer of bestanden intact zijn: `ls -la /tmp/restore-test`.
Veelgestelde problemen
1. rsync faalt met 'Permission denied' Oplossing: draai het script als root (`sudo crontab -e`) of voeg de gebruiker toe aan de juiste groepen voor de bronmappen.
2. systemd-timer start niet op Oplossing: herlaad systemd na het aanmaken van bestanden: `sudo systemctl daemon-reload`. Controleer fouten: `sudo journalctl -u backup.service`.
3. Backups stoppen met werken na hermontage van opslag Oplossing: voeg `RequiresMountsFor=/mnt/backups` toe aan backup.service in de `[Unit]`-sectie, zodat de service wacht tot de schijf beschikbaar is.
Een werkend backupsysteem is geen eindpunt — je zult retentieperiodes en scripts moeten bijstellen naarmate data en omgeving groeien.