Sauvegarde basée sur Restic pour Weblate avec PostgreSQL
Note : Articles associés :
- Comment installer le serveur REST Restic sur un NAS Synology pour la configuration du serveur (vous pouvez également utiliser d’autres backends)
- Notre configuration Weblate basée sur
docker-compose: Installation de Weblate en 10 minutes avec docker-compose & Traefik
Configuration du script de sauvegarde
Tout d’abord, générez le mot de passe de chiffrement avec
backup.sh
pwgen 30 > .restic_passwordAssurez-vous de sauvegarder ce mot de passe séparément sinon TOUTES VOS DONNÉES SERONT PERDUES !
Créez maintenant backup.sh dans le même répertoire que docker-compose.yml :
weblate_backup.sh
#!/bin/bash
export NAME=$(basename $(pwd))
export RESTIC_REPOSITORY=rest:http://restic:abc123@10.1.2.3:16383/$NAME
export RESTIC_PASSWORD_FILE=.restic_password
if [ ! -f "${RESTIC_PASSWORD_FILE}" ]; then
echo "Veuillez créer .restic_password avec le mot de passe de chiffrement de la sauvegarde ET SAUVEGARDEZ CE MOT DE PASSE SÉPARÉMENT !!!"
exit 1
fi
echo "Initialisation du dépôt, veuillez ignorer les erreurs 'already exists'"
if [ ! -f ".restic_inited" ]; then
# Exécuter la commande restic init
restic init
if [ $? -eq 0 ]; then # si l'initialisation réussit
# Créer le fichier d'initialisation
touch ".restic_inited"
echo "Restic initialisé"
fi
fi
# Sauvegarde
source .env
docker-compose exec -T database pg_dump -U${POSTGRES_USER} ${POSTGRES_DB} | restic --verbose backup --stdin --stdin-filename="${NAME}.sql"
# Sauvegarde des fichiers
restic --verbose backup backup.sh docker-compose.yml weblate_data --exclude weblate_data/backups --exclude '**/__pycache__'Démarrage automatique du script de sauvegarde
Voir Comment créer un timer et un service de sauvegarde Systemd en 10 secondes
TL;DR : Dans le répertoire où se trouve backup.sh, exécutez
create_backup_service.sh
wget -qO- https://techoverflow.net/scripts/create-backup-service.sh | sudo bash /dev/stdinIf this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow