automatische backups instellen op linux
Automatische Backups Instellen Op Linux
Automatische backups instellen op Linux
Dit artikel legt uit hoe je een geautomatiseerde backup-architectuur op Linux opzet met rsync, systemd-timers en externe opslag.
Vereisten
- Linux-distributie met rsync ≥3.1.0 en systemd ≥237 - root- of sudo-toegang voor systeemconfiguratie - Externe opslaglocatie (aparte schijf, NAS of externe server) gemount op `/backup/` - Lees-/schrijfrechten op bronmap (bijv. `/data/`) en doellocatie (`/backup/data/`)
Stappen
1. Installeer rsync als het nog niet aanwezig is
```bash sudo apt install rsync Debian/Ubuntu sudo dnf install rsync Fedora/RHEL ```
2. Test handmatig de eerste backup
```bash /usr/bin/rsync -av --delete /data/ /backup/data/ ```
Vlag `-av` archiveert (behoudt permissies, timestamps, symlinks) en toont voortgang. `--delete` verwijdert bestanden in `/backup/data/` die niet meer in `/data/` bestaan.
3. Maak het systemd-servicebestand aan
```bash sudo nano /etc/systemd/system/backup.service ```
Inhoud:
``` [Unit] Description=Dagelijkse rsync-backup van /data naar /backup/data After=network-online.target
[Service] Type=oneshot ExecStart=/usr/bin/rsync -av --delete /data/ /backup/data/ StandardOutput=journal StandardError=journal ```
4. Maak het bijbehorende timerbestand aan
```bash sudo nano /etc/systemd/system/backup.timer ```
Inhoud:
``` [Unit] Description=Timer voor dagelijkse backup om 02:00
[Timer] OnCalendar=daily Persistent=true
[Install] WantedBy=timers.target ```
5. Activeer en start de timer
```bash sudo systemctl daemon-reload sudo systemctl enable backup.timer sudo systemctl start backup.timer ```
6. Controleer of de timer actief is
```bash systemctl list-timers --all | grep backup.timer ```
7. Voeg logging toe voor foutopsporing
Optioneel: voeg `2>&1 | logger -t backup` toe aan `ExecStart` in het servicebestand om alle output naar syslog te sturen. Of gebruik `journalctl -u backup.service` voor realtime logs.
8. Test een restore op een aparte locatie
```bash mkdir -p /test-restore rsync -av /backup/data/ /test-restore/ diff -r /data/ /test-restore/ ```
Verificatie
Controleer of de backup is uitgevoerd en data correct is:
```bash systemctl status backup.service Laatste run status journalctl -u backup.service --since "1 hour ago" Logs van recente backup diff -r /data/ /backup/data/ Geen output = identiek ```
Veelgestelde problemen
1. rsync geeft "Permission denied" op bepaalde bestanden Oorzaak: rsync draait niet met voldoende rechten. Oplossing: voeg `User=root` toe aan `[Service]` in het servicebestand en herlaad systemd.
2. Timer start niet op het geplande tijdstip Oorzaak: `Persistent=true` zorgt dat gemiste runs worden ingehaald, maar niet bij eerste activatie. Oplossing: voeg `OnBootSec=5min` toe aan `[Timer]` voor een eerste run na opstarten, of start handmatig: `sudo systemctl start backup.service`.
3. Backup schrijft naar verkeerde locatie Oorzaak: vergeten trailing slash in `--delete`. Oplossing: gebruik altijd `/data/` (met slash) als bron en `/backup/data/` (zonder slash) als doel. Slash op bron kopieert de inhoud, zonder slash kopieert rsync de map zelf.