Ga naar hoofdinhoud

Online zetten: elke nacht met cron

Het script uit les 41 werkt als jij het start. Nu laat je de server het zelf doen, elke nacht.

Een regel in de crontab​

cron is een dienst op elke Ubuntu-server die commando's op vaste tijden draait. Elke gebruiker heeft een eigen lijst, de crontab. Open de jouwe, als sam en zonder sudo:

crontab -e

De eerste keer vraagt hij welke editor je wilt:

Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic

Druk op Enter voor nano. Onder de regels met een # zet je één regel:

30 3 * * * bash /home/sam/backup.sh >> /home/sam/backups/log.txt 2>&1

De eerste vijf velden zeggen wanneer:

VeldHierBetekenis
minuut30op minuut 30
uur3van 3 uur 's nachts
dag van de maand*elke dag
maand*elke maand
dag van de week*elke dag van de week

Daarna komt het commando. Schrijf hele paden, met /home/sam en niet ~. >> …/log.txt 2>&1 zet alles wat het script zegt, ook de fouten, achter elkaar in log.txt. Daar lees je achteraf wat er gebeurde terwijl jij sliep.

Sla op en sluit nano; cron zegt crontab: installing new crontab. crontab -l toont je lijst.

Niet tot morgen wachten​

Kijk hoe laat de server het vindt:

date
Tue Nov 3 14:10:12 UTC 2026

Let op UTC: de server rekent in de tijd van Greenwich, een of twee uur achter op Nederland. Neem het uur dat date toont. Zet met crontab -e de tijd op twee minuten vanaf nu, hier 14:12:

12 14 * * * bash /home/sam/backup.sh >> /home/sam/backups/log.txt 2>&1

Wacht tot die minuut voorbij is, en kijk:

ls -l ~/backups
tail ~/backups/log.txt

Zet de tijd daarna met crontab -e terug op 30 3.

Controlevraag
Op een nacht is de schijf vol, en docker compose cp mislukt. Wat lees je 's ochtends onderaan log.txt?
Kies wat jij denkt. Bij het goede antwoord zie je de uitleg.

Er gaat iets mis​

Er komt geen back-up, en geen log.txt​

Oorzaak: de map ~/backups bestaat niet. Cron kan log.txt dan niet maken, en start het script niet eens.

Oplossing: maak de map met mkdir ~/backups, en probeer het opnieuw met de tijd op twee minuten vanaf nu.

De back-up komt op een ander uur​

Oorzaak: je rekende met de tijd van Nederland, en de server rekent in UTC.

Oplossing: reken de tijd om, of laat hem staan: 3:30 UTC is in Nederland ook midden in de nacht.

permission denied in log.txt​

permission denied while trying to connect to the docker API at unix:///var/run/docker.sock

Oorzaak: sam zit niet in de groep docker. Bij het inloggen met ssh merk je dat meteen, maar cron draait ook als jij er niet bij bent.

Oplossing: zet sam in de groep zoals in les 30, en probeer het script met de hand.

No such file or directory in log.txt​

/home/sam/backup.sh: line 4: cd: /root/gastenboek: No such file or directory

Oorzaak: je zette de regel met sudo crontab -e in de lijst van root. Het script draait dan als root, en voor root is ~ de map /root.

Oplossing: haal de regel daar weg met sudo crontab -e, en zet hem in je eigen lijst met crontab -e, zonder sudo.

Door naar les 43: de back-ups naar je laptop.