Sauvegarde de base de données : PostgreSQL, MySQL, rsync, rclone, CloudBox
La sauvegarde de base de données est l'une des procédures les plus importantes pour garantir la sécurité et la fiabilité des sites web et des applications. La perte de données peut survenir pour de nombreuses raisons : défaillance du serveur, erreur de l'administrateur, problèmes de mise à jour, logiciels malveillants ou simplement erreur humaine. Les sauvegardes régulières vous permettent de restaurer rapidement votre projet sans perte de données.
Ce guide explique comment sauvegarder les bases de données PostgreSQL et MySQL, comment stocker les sauvegardes sur un serveur Linux distant en utilisant rsync ou scp, et comment les télécharger sur un stockage cloud en utilisant rclone.
Sauvegarde PostgreSQL
PostgreSQL fournit l'utilitaire standard pg_dump, qui permet de créer une copie complète de la base de données sous forme de fichier SQL.
Exemple de création d'une sauvegarde :
pg_dump -U myuser -h localhost mydatabase > /backup/mydatabase_$(date +%F).sql
Explication des paramètres :
- -U myuser — nom d'utilisateur de la base de données ;
- -h localhost — adresse du serveur (peut être omise si local) ;
- mydatabase — nom de la base de données ;
- /backup/... — chemin de destination ;
- $(date +%F) — ajoute la date actuelle au nom du fichier.
Pour économiser de l'espace, compressez immédiatement la sauvegarde :
pg_dump -U myuser mydatabase | gzip > /backup/mydatabase_$(date +%F).sql.gz
Pour sauvegarder toutes les bases de données sur le serveur :
pg_dumpall -U myuser | gzip > /backup/postgres_all_$(date +%F).sql.gz
Sauvegarde MySQL
Pour MySQL et MariaDB, utilisez l'utilitaire mysqldump.
Exemple de sauvegarde d'une seule base de données :
mysqldump -u myuser -p mydatabase > /backup/mydatabase_$(date +%F).sql
Lorsque vous exécutez cette commande, le système vous demandera le mot de passe de l'utilisateur.
Pour sauvegarder toutes les bases de données :
mysqldump -u myuser -p --all-databases | gzip > /backup/mysql_all_$(date +%F).sql.gz
Pour inclure les procédures stockées et les déclencheurs, ajoutez les options --routines --triggers.
Sauvegarde vers CloudBox
CloudBox d'INTROSERV est une solution de stockage cloud prenant en charge plusieurs protocoles de connexion (y compris rsync, scp, rsync sur SSH, WebDAV). La facilité d'utilisation de CloudBox simplifie considérablement les tâches de téléchargement, de gestion et de récupération des données.
Vous pouvez l'utiliser comme emplacement distant pour stocker vos sauvegardes de base de données. Voici les détails de configuration et des exemples de scripts.
Étape 1. Obtenir l'accès à CloudBox
Commandez l'un des plans CloudBox disponibles sur notre site web — https://introserv.com/solutions/cloudbox/
Après paiement, le service devient disponible en quelques minutes. Après l'activation du service, vous recevrez les détails de connexion :
- adresse du serveur (box$$$$$.introserv.cloud)
- nom d'utilisateur (box$$$$$) et mot de passe
Étape 2. Connexion et synchronisation en utilisant rsync ou scp
Utilisation de rsync (recommandé) :
rsync -avz -e "ssh -p 22" /backup/ user@cloudbox-server:/path_to_cloudbackups/
Où :
- user — nom d'utilisateur CloudBox ;
- cloudbox-server — adresse de connexion ;
- /path_to_cloudbackups/ — chemin sur CloudBox.
Pour un fonctionnement automatisé, il est conseillé de configurer des clés SSH.
1) Générez une clé publique :
ssh-keygen -t rsa
2) Copiez le contenu du fichier de clé publique créé, par exemple /root/.ssh/id_rsa.pub dans le presse-papiers.
3) Allez dans la section "Profil" (survolez l'icône utilisateur en haut à droite), ajoutez le contenu de la clé dans le champ "Clés publiques" et enregistrez les paramètres.


Après cela, rsync fonctionnera sans invites de mot de passe, ce qui est pratique pour les tâches cron.
Alternative — scp :
scp /backup/mysql_mydatabase.sql.gz user@cloudbox-server:/path_to_cloudbackups/
Étape 3. Connexion et synchronisation en utilisant rclone
Si vous souhaitez utiliser rclone pour interagir avec CloudBox, configurez-le comme suit.
1) Installez rclone :
sudo apt install rclone
2) Démarrez la configuration :
rclone config
Lors de la configuration, sélectionnez :
- n — pour créer un nouveau distant ;
- nom, par exemple
cloudbox; - type de stockage — choisissez
sftpoussh; - saisissez l'adresse du serveur au format
box$$$$$.introserv.cloud, le nom d'utilisateur au formatbox$$$$$, le port (SSH — par défaut 22), le chemin du répertoire ; - effectuez l'autorisation (si nécessaire).
Testez la connexion :
rclone ls cloudbox:/path_to_cloudbackups/
Copiez les données de sauvegarde :
rclone copy /backup/ cloudbox:/db-backups/ --progress
Synchronisez avec suppression des fichiers manquants localement :
rclone sync /backup/ cloudbox:/db-backups/ --progress
Si nécessaire — cryptez les fichiers avant le transfert :
rclone copy /backup/ cloudbox:/db-backups/ --progress --crypt
Étape 4. Exemple de script d'automatisation avec CloudBox
Créez le script /usr/local/bin/db_backup_cloudbox.sh :
#!/bin/bash DATE=$(date +%F) BACKUP_DIR="/backup/$DATE" mkdir -p $BACKUP_DIR # PostgreSQL pg_dump -U myuser mydatabase | gzip > $BACKUP_DIR/postgres_mydatabase.sql.gz # MySQL mysqldump -u myuser -p mydatabase | gzip > $BACKUP_DIR/mysql_mydatabase.sql.gz # Téléchargement vers CloudBox rsync -avz -e "ssh -p 22" $BACKUP_DIR/ user@cloudbox-server:/path_to_cloudbackups/$DATE/ # Téléchargement vers CloudBox (option rclone, décommentez si utilisé) # rclone copy $BACKUP_DIR/ cloudbox:/db-backups/$DATE/ --progress # Supprimez les sauvegardes de plus de 7 jours find /backup/ -type f -mtime +7 -delete
Ajoutez ensuite une tâche cron (le script s'exécute quotidiennement à 2h00) :
0 2 * * * /usr/local/bin/db_backup_cloudbox.sh
Considérations importantes :
- Assurez-vous que la connexion à CloudBox est stable et que la bande passante est suffisante.
- Mettez en place une surveillance : vérifiez que les fichiers sont effectivement copiés.
- Testez périodiquement la restauration à partir des sauvegardes CloudBox.
- Lorsque vous utilisez des données confidentielles — envisagez de crypter les sauvegardes.
Copie vers un serveur Linux distant via SSH
Si vous souhaitez stocker les sauvegardes non seulement localement mais aussi sur un autre serveur, utilisez rsync ou scp.
Utilisation de rsync (recommandé, car il ne copie que les modifications) :
rsync -avz -e "ssh -p 22" /backup/ [email protected]:/remote_backups/
Explication des paramètres :
- user — nom d'utilisateur sur le serveur distant ;
- remote.server — adresse IP ou nom de domaine du serveur distant ;
- /remote_backups/ — chemin pour stocker les sauvegardes.
Pour fonctionner sans entrer de mot de passe, configurez des clés SSH.
Générez des clés SSH :
ssh-keygen -t rsa
Copiez la clé sur le serveur distant :
ssh-copy-id [email protected]
Après cela, rsync fonctionnera sans invites de mot de passe, ce qui est pratique pour les tâches cron.
Alternative — en utilisant scp :
scp /backup/mysql_mydb.sql.gz [email protected]:/remote_backups/
Copie vers un stockage cloud via rclone
Si vous devez stocker des sauvegardes dans le cloud (Google Drive, Dropbox, Amazon S3, etc.), utilisez rclone — un outil universel pour synchroniser les données avec divers services cloud.
Installation :
sudo apt install rclone
Configuration :
rclone config
Suivez les étapes de configuration interactive :
- Sélectionnez n pour créer une nouvelle connexion ;
- Entrez un nom, par exemple
remote; - Sélectionnez le type de stockage (par exemple
s3,drive,dropbox) ; - Entrez les clés d'accès ou autorisez via le navigateur.
Vérifiez la connexion :
rclone ls remote:path
Exemple de téléchargement de sauvegardes vers le cloud :
rclone copy /backup/ remote:db-backups/ --progress
Commande de synchronisation (supprime les fichiers manquants localement) :
rclone sync /backup/ remote:db-backups/ --progress
Vous pouvez également crypter les fichiers avant de les télécharger :
rclone copy /backup/ remote:db-backups/ --progress --crypt
Sécurité et contrôle
- Stockez les sauvegardes dans au moins deux emplacements — localement et à distance.
- Vérifiez régulièrement que les sauvegardes sont créées et téléchargées avec succès.
- Effectuez des restaurations de test au moins une fois par mois.
- Créez des fichiers contenant des données sensibles si vous utilisez des clouds publics :
gpg -c /backup/mysql_mydatabase.sql.gz
- Assurez-vous des permissions de fichier appropriées pour
/backupet sécurisez vos identifiants de base de données.
Restauration à partir de la sauvegarde
PostgreSQL :
gunzip < backup.sql.gz | psql -U myuser -d mydatabase
MySQL :
gunzip < backup.sql.gz | mysql -u myuser -p mydatabase
Conclusion
La sauvegarde des bases de données PostgreSQL et MySQL est une procédure simple mais d'une importance cruciale. Même l'infrastructure la plus fiable ne peut vous protéger des erreurs humaines ou des défaillances techniques. La meilleure stratégie est des sauvegardes automatisées régulières stockées sur au moins un serveur externe et dans le cloud, avec des tests de récupération périodiques.
En utilisant une combinaison de pg_dump, mysqldump, rsync, rclone et cron, vous pouvez construire un système de sauvegarde fiable et entièrement automatisé sans aucun logiciel tiers payant. Cette approche est facile à mettre en œuvre et convient à tous les systèmes Linux.