Ga naar hoofdinhoud

Online zetten: een back-up

Hier bouw je op verder: Bestanden kopiëren met scp

Weet je dit niet meer zeker? Lees het terug voordat je verdergaat.

Het volume is het enige op je server dat je niet opnieuw kunt maken: je code staat op GitHub, maar de berichten en accounts van je bezoekers staan alleen in gastenboek_data. Hetzelfde geldt voor de instellingen van de server, .env en de map ~/traefik. Een kapotte schijf, een docker compose down -v of een opgezegde server, en ze zijn weg. Maak er daarom een kopie van, op een andere computer.

Een kopie maken​

Stop je site even, zodat er tijdens het kopiëren niets verandert, en kopieer de map data uit de container:

mkdir ~/backup
cd ~/gastenboek
docker compose stop
docker compose cp gastenboek:/app/data ~/backup/data
docker compose start

docker compose cp kopieert tussen een container en de server, ook als de container gestopt is. gastenboek: is de naam van de service uit compose.yaml. Zet de instellingen van de server erbij:

cp ~/gastenboek/.env ~/backup/
cp -r ~/traefik ~/backup/

Haal de kopie daarna naar je laptop. Typ dit in WSL, niet op de server:

scp -r sam@gastenboek.voorbeeld.nl:backup ~/backup-gastenboek

Ging ssh tot nu toe met het IP-adres, dan vraagt hij bij de domeinnaam nog één keer of je de vingerafdruk vertrouwt; het is dezelfde server. Staat de kopie op je laptop, gooi hem dan op de server weg met rm -r ~/backup. De kopie in ~/backup-gastenboek op je laptop houd je: die zet je in de volgende stap terug. In gebruikers.db staan de wachtwoorden van je bezoekers, als hash; bewaar de back-up dus net zo zorgvuldig als de server zelf.

Controlevraag
In de back-up zitten je databases, .env en ~/traefik. Waarom zit main.py er niet in?
Kies wat jij denkt. Bij het goede antwoord zie je de uitleg.

Er gaat iets mis​

Permission denied bij rm -r ~/backup​

Oorzaak: je maakte de back-up met sudo docker compose cp. Dan is de kopie van root.

Oplossing: gooi hem weg met sudo rm -r ~/backup, en laat sudo voortaan weg voor docker.

De nieuwe back-up staat in ~/backup-gastenboek/backup​

Je maakte een tweede back-up, en op je laptop toont ls -A ~/backup-gastenboek:

.env backup data traefik

Oorzaak: ~/backup-gastenboek bestond al van de vorige keer. Dan maakt scp -r de map backup daarbinnen, in plaats van de oude te vervangen. Daarbuiten staat nog de oude back-up.

Oplossing: geef de oude back-up eerst een andere naam, en haal de nieuwe opnieuw op:

rm -r ~/backup-gastenboek/backup
mv ~/backup-gastenboek ~/backup-gastenboek-oud
scp -r sam@gastenboek.voorbeeld.nl:backup ~/backup-gastenboek

Opdrachten​

Opdracht 1: Run - Een back-up op je laptop​

Maak een back-up van je server, en haal hem naar je laptop. Wat staat er in ~/backup-gastenboek?

Antwoord

De map data met je databases (gebruikers.db, en de andere die je site gebruikt), het bestand .env, en de map traefik met de compose.yaml van de voordeur. Met die drie, en je repository op GitHub, kun je op een nieuwe server alles terugzetten.

Door naar les 38: een back-up terugzetten.