Help mij met het opzetten van geautomatiseerde back-ups voor mijn Statamic CMS
description
Met deze prompt kun je een geautomatiseerd back-up systeem opzetten dat je beschermt tegen dataverlies, snelle herstelopties biedt en volledig is afgestemd op jouw Statamic website en hostingomgeving. Dit voorkomt handmatig back-uppen en minimaliseert risico's, wat beter is dan onregelmatige of handmatige back-ups.
prompt
Help mij een geautomatiseerd back-up systeem op te zetten voor mijn Statamic website om dataverlies te voorkomen en herstel eenvoudig te maken. Mijn huidige hostingomgeving is: <beschrijf je hostingomgeving>. Ik wil back-ups maken ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een stapsgewijze gids om een geautomatiseerd back-up systeem voor je Statamic-website op te zetten, inclusief je content map en MySQL database, met opslag op AWS S3:
1. Voorbereidingen
a. AWS S3:
- Maak een S3-bucket aan via de AWS Management Console.
- Noteer je bucketnaam, regio, en maak een IAM-gebruiker aan met alleen de benodigde rechten (bijvoorbeeld s3:PutObject, s3:DeleteObject).
- Genereer toegangssleutels (Access Key ID en Secret Access Key).
b. Server:
- Zorg dat je SSH-toegang hebt tot je shared hosting (indien mogelijk) of dat je via bijvoorbeeld cPanel cronjobs kunt instellen.
- Installeer eventueel benodigde CLI-tools zoals AWS CLI, afhankelijk van je hostingmogelijkheden.
2. Script voor Back-up
a. Maak een shell-script (bijvoorbeeld backup.sh) dat:
- De MySQL database exporteert met `mysqldump`.
- De content map (bijvoorbeeld `/path/to/statamic/content`) comprimeert met `tar`.
- De backups naar AWS S3 uploadt met `aws s3 cp`.
- Oude backups (ouder dan 30 dagen) verwijdert uit S3.
Voorbeeldscript:
```bash
#!/bin/bash
# Configuratie
DATE=$(date +"%Y-%m-%d")
BACKUP_DIR="/tmp/statamic_backup"
DB_NAME="jouwdatabase"
DB_USER="jouwgebruikersnaam"
DB_PASS="jouwwachtwoord"
S3_BUCKET="jouw-s3-bucketnaam"
CONTENT_PATH="/pad/naar/statamic/content"
MAX_DAYS=30
# Maak backup directory
mkdir -p "$BACKUP_DIR"
# Backup database
mysqldump -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" > "$BACKUP_DIR/db_$DATE.sql"
# Backup content map
tar -czf "$BACKUP_DIR/content_$DATE.tar.gz" -C "$CONTENT_PATH" .
# Upload backups naar S3
aws s3 cp "$BACKUP_DIR/db_$DATE.sql" "s3://$S3_BUCKET/backups/db_$DATE.sql"
aws s3 cp "$BACKUP_DIR/content_$DATE.tar.gz" "s3://$S3_BUCKET/backups/content_$DATE.tar.gz"
# Verwijder lokale backups
rm -rf "$BACKUP_DIR"
# Verwijder oude backups uit S3 (ouder dan MAX_DAYS)
aws s3api list-objects --bucket "$S3_BUCKET" --prefix "backups/" --query "Contents[?LastModified<='$(date -d "$MAX_DAYS days ago" --utc +%Y-%m-%dT%H:%M:%SZ')'].Key" --output text | while read -r KEY; do
aws s3 rm "s3://$S3_BUCKET/$KEY"
done
```
3. Automatisering met Cron
- Stel een cronjob in op je hosting om dit script dagelijks uit te voeren, bijvoorbeeld om 2:00 uur 's nachts.
Cronjob voorbeeld:
```bash
0 2 * * * /pad/naar/backup.sh
```
4. Beheer en Controle
- Controleer regelmatig of de back-ups correct worden gemaakt en opgeslagen.
- Test herstelprocedures om te verzekeren dat de back-ups bruikbaar zijn.
Let op:
- Shared hosting kan beperkingen hebben voor het uitvoeren van scripts en cronjobs. Als je hosting dit niet toelaat, overweeg dan een VPS of dedicated server.
- Zorg dat je AWS CLI correct is geïnstalleerd en geconfigureerd met je toegangssleutels.
Met deze setup heb je een betrouwbaar, geautomatiseerd back-up systeem dat je data beschermt en eenvoudig te herstellen is.
provider: deepseek
model: deepseek-chat
Ik help je graag een geautomatiseerd back-upsysteem op te zetten voor je Statamic website. Hier is een stapsgewijze oplossing:
## 1. AWS S3 Bucket aanmaken
- Maak een S3 bucket aan in je AWS Console
- Stel lifecycle policies in voor automatische verwijdering na 30 dagen
- Genereer AWS Access Keys (Sla deze veilig op!)
## 2. Back-up Script maken
Maak een bestand `backup.sh` op je server:
```bash
#!/bin/bash
# Backup script voor Statamic website
# Configuratie
BACKUP_DIR="/home/gebruiker/backups"
SITE_DIR="/home/gebruiker/domains/jedomein.nl/public_html/content"
DB_NAME="jouw_database"
DB_USER="jouw_gebruiker"
DB_PASS="jouw_wachtwoord"
DATE=$(date +%Y%m%d_%H%M%S)
AWS_BUCKET="s3://jouw-bucket-naam"
# Maak backup directory
mkdir -p $BACKUP_DIR
# Database backup
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/db_backup_$DATE.sql
# Content backup
tar -czf $BACKUP_DIR/content_backup_$DATE.tar.gz $SITE_DIR
# Upload naar S3
aws s3 cp $BACKUP_DIR/db_backup_$DATE.sql $AWS_BUCKET/backups/
aws s3 cp $BACKUP_DIR/content_backup_$DATE.tar.gz $AWS_BUCKET/backups/
# Oude lokale backups opschonen (ouder dan 7 dagen)
find $BACKUP_DIR -name "*.sql" -mtime +7 -delete
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete
```
## 3. AWS CLI installeren en configureren
```bash
# Installeer AWS CLI (mogelijk via pip)
pip install awscli
# Configureer AWS
aws configure
# Vul je AWS Access Key, Secret Key, region (bijv. eu-west-1) in
```
## 4. Cronjob instellen voor dagelijkse back-ups
Voeg toe aan je crontab (`crontab -e`):
```bash
0 2 * * * /bin/bash /home/gebruiker/backup.sh >> /home/gebruiker/backup.log 2>&1
```
## 5. Belangrijke aanpassingen
Pas deze variabelen aan in het script:
- `SITE_DIR`: Pad naar je Statamic content map
- `DB_NAME`, `DB_USER`, `DB_PASS`: Je database gegevens
- `AWS_BUCKET`: Je S3 bucket naam
## 6. Test het script
```bash
# Maak script uitvoerbaar
chmod +x /home/gebruiker/backup.sh
# Test het script
./backup.sh
```
## 7. Beveiliging
- Bewaar AWS credentials veilig
- Gebruik beperkte IAM permissions voor S3
- Houd je script buiten de webroot
## 8. Herstelprocedure
Om terug te zetten:
```bash
# Database herstellen
mysql -u gebruiker -p database < backup.sql
# Content herstellen
tar -xzf content_backup.tar.gz -C /doelmap/
```
Let op: Controleer of TransIP SSH-toegang toestaat en of je de benodigde packages kunt installeren. Mocht dit niet werken vanwege shared hosting beperkingen, overweeg dan TransIP's eigen backup-dienst of een alternatief back-up plugin voor Statamic.