automatische backups instellen op linux
Automatische Backups Instellen Op Linux
Automatische back-ups instellen op Linux
Dit artikel legt uit hoe je automatische back-ups op Linux configureert met `rsync` en `cron` — de stabielste en controleerbaarste methode voor servers en werkstations.
Vereisten
- Linux-distributie met `rsync` (3.x) en `cronie` (1.7.x) of `systemd` (250+) - Root- of sudo-toegang - Externe opslag (SSH-server, USB-schijf of NFS-mount) — de back-up moet buiten het bronsysteem worden opgeslagen - Lees- en schrijfrechten op het doelpad
Stappen
1. Controleer of rsync en cron beschikbaar zijn
```bash rsync --version | head -1 cron -V 2>/dev/null || systemctl --version | head -1 ```
Als `rsync` ontbreekt, installeer het dan: ```bash sudo apt install rsync Debian/Ubuntu sudo dnf install rsync Fedora/RHEL ```
2. Maak een back-up script aan
Maak een script dat `rsync` aanroept met incrementele logica. Dit voorbeeld synchroniseert `/home` naar een externe schijf op `/mnt/backup` en houdt 7 dagelijkse snapshots via `--link-dest`.
```bash sudo nano /usr/local/bin/backup-home.sh ```
Plaats deze inhoud: ```bash #!/bin/bash SOURCE="/home" DEST="/mnt/backup/home" DATE=$(date +%Y-%m-%d) LATEST="$DEST/latest" SNAPSHOT="$DEST/$DATE"
mkdir -p "$DEST"
Alleen rsync-uitvoer bij fouten rsync -a --delete --link-dest="$LATEST" "$SOURCE" "$SNAPSHOT" 2>&1 | tee /var/log/backup.log
Update latest symlink rm -f "$LATEST" ln -s "$SNAPSHOT" "$LATEST" ```
Sla op en maak uitvoerbaar: ```bash sudo chmod +x /usr/local/bin/backup-home.sh ```
3. Test het script handmatig
Voer het script uit om te controleren of de paden kloppen: ```bash sudo /usr/local/bin/backup-home.sh ```
Controleer de logfile: ```bash cat /var/log/backup.log ```
4. Voeg een cron-taak toe
Open de crontab voor root (back-ups vereisen systeemrechten): ```bash sudo crontab -e ```
Voeg deze regel toe voor een dagelijkse back-up om 02:00: ```cron 0 2 * /usr/local/bin/backup-home.sh ```
Sla op en sluit. De output verschijnt in `/var/log/backup.log`.
5. Optioneel: gebruik systemd timer in plaats van cron
Als je systemd verkiest, maak dan een service-unit aan: ```bash sudo nano /etc/systemd/system/backup-home.service ```
Inhoud: ```ini [Unit] Description=Home directory backup
[Service] Type=oneshot ExecStart=/usr/local/bin/backup-home.sh ```
En een timer-unit: ```bash sudo nano /etc/systemd/system/backup-home.timer ```
```ini [Unit] Description=Run backup-home daily
[Timer] OnCalendar=daily Persistent=true
[Install] WantedBy=timers.target ```
Activeer de timer: ```bash sudo systemctl daemon-reload sudo systemctl enable --now backup-home.timer ```
6. Configureer retentie
Beperk het aantal snapshots om schijf vol te voorkomen. Voeg onderstaande regels toe aan het script, net voor de `rsync`-regel: ```bash Verwijder snapshots ouder dan 7 dagen find "$DEST" -maxdepth 1 -type d -mtime +7 -exec rm -rf {} \; ```
Gebruik `-mtime +30` voor 30 dagen retentie.
7. Stel monitoring in
Log altijd fouten. Voeg notificatie toe voor mislukte runs: ```bash if [ $? -ne 0 ]; then echo "Backup failed on $(date)" | sudo tee -a /var/log/backup-fail.log fi ```
Voor e-mailmeldingen: installeer `mailx` en voeg `mail -s "Backup fail" user@example.com` toe.
Verificatie
Controleer of de back-up correct is uitgevoerd:
```bash ls /mnt/backup/home/ cat /var/log/backup.log | tail -5 ```
Voer een proefrestore uit naar een testmap: ```bash rsync -a /mnt/backup/home/latest/ /tmp/restore-test/ diff -rq /home /tmp/restore-test/home ```
Geen output = bestanden identiek.
Veelgestelde problemen
1. rsync faalt met "Permission denied" Oorzaak: rsync draait niet als root of het doelpad is niet beschrijfbaar. Oplossing: voer het script uit met `sudo` of voeg de gebruiker toe aan de juiste groep (`sudo usermod -aG backup user`).
2. Cron-taak wordt niet uitgevoerd Oorzaak: cronie draait niet of de crontab-syntaxis is fout. Controle: `sudo systemctl status cronie`. Test met een simpele taak: ` * touch /tmp/cron-test.txt`. Verwijder dit na testen.
3. Backup duurt te lang en overlapt met volgende run Oorzaak: bestanden overschrijden de beschikbare tijd. Oplossing: gebruik incrementele back-ups (al toegepast met `--link-dest`) of verklein de bronmap. Plan back-ups op daluren.
Een back-up die je niet test is een wens, geen herstelplan. Start met deze opzet en voer elke maand een restore uit op een testserver.