Accueil
» ADMINISTRATEUR RÉSEAU
»
Comment configurer des sauvegardes de base de données automatisées pour le serveur ownCloud
Comment configurer des sauvegardes de base de données automatisées pour le serveur ownCloud
Vous découvrez les failles d'un plan de sauvegarde au pire moment : une mise à jour échoue, une table de base de données est corrompue ou un serveur disparaît, et la seule « sauvegarde » disponible est une copie des fichiers utilisateur. C'est insuffisant pour ownCloud Server. La base de données contient des données critiques de l'application, comme les utilisateurs, les partages, les métadonnées des fichiers et les données de configuration. Un plan de récupération fiable nécessite la base de données, ainsi que les fichiers et la configuration correspondant à l'état du serveur à ce moment précis.
Ce guide présente une méthode pratique pour automatiser les sauvegardes de bases de données ownCloud sous Linux, depuis la sauvegarde manuelle jusqu'à la mise en place d'une tâche planifiée et vérifiée. Les exemples se concentrent sur MySQL/MariaDB, moteurs recommandés par ownCloud, mais une variante PostgreSQL est également fournie. Les commandes sont conformes à la documentation d'administration d'ownCloud Server 11.0, tout en précisant les différences pour les installations traditionnelles sans Docker.
Tout d'abord, il est important de comprendre ce qu'une sauvegarde de base de données ne couvre pas.
La sauvegarde de la base de données ne représente qu'une partie d'une sauvegarde ownCloud. La documentation de sauvegarde d'ownCloud Server 11.0 détaille la base de données ainsi que le répertoire de configuration, le répertoire de données, les répertoires d'applications (le cas échéant) et les fichiers de thème personnalisés. Le répertoire de données pouvant également contenir des clés de chiffrement, une sauvegarde de la base de données seule ne permet pas de reconstruire un serveur complet après une perte totale de données.
Utilisez l'automatisation ci-dessous pour la protection de la base de données, mais associez-la à une stratégie de sauvegarde au niveau fichier ou à la création d'instantanés pour le reste de votre installation ownCloud. Pour obtenir un point de restauration parfaitement cohérent, effectuez la sauvegarde de la base de données et la sauvegarde des fichiers simultanément lors de la même fenêtre de maintenance.
Étape 1 : Confirmer quelle base de données ownCloud utilise
Avant de rédiger une commande de sauvegarde, identifiez le type de base de données, l'hôte, le nom de la base de données et l'utilisateur. Sur une installation ownCloud classique, ces informations sont généralement disponibles dans config/config.phple répertoire `/etc/owncloud`. Vous pouvez également consulter la configuration système à l'aide de l'outil en ligne de commande ownCloud. Par exemple, depuis le répertoire ownCloud :
sudo -u www-data ./occ config:list system
Dans le cadre d'un déploiement Docker Compose, la documentation actuelle utilise des commandes telles que :
docker compose exec owncloud occ config:list system
Recherchez des valeurs telles que dbtype, dbhost, dbname, et dbuser. ownCloud Server 11.0 prend officiellement en charge MySQL/MariaDB et PostgreSQL, MySQL ou MariaDB étant recommandés pour les déploiements normaux.
Exemple de vue terminal des paramètres de base de données nécessaires avant de créer une commande de sauvegarde.
Étape 2 : Créer un emplacement de sauvegarde protégé
Créez un répertoire dédié non accessible via le Web. L'appartenance à l'utilisateur root est un choix judicieux par défaut lorsque la tâche planifiée s'exécute depuis le crontab de root :
Vérifiez l'espace libre avec df -h /var/backups/owncloud-db. Une tâche de sauvegarde qui remplit silencieusement le disque système peut provoquer une seconde panne tout en essayant de se prémunir contre la première.
Un répertoire de sauvegarde dédié permet de séparer les sauvegardes de la base de données de la racine web et de faciliter leur protection.
Étape 3 : Ne pas inclure les informations d’identification de la base de données dans la commande cron
Ne saisissez pas le mot de passe de la base de données directement dans la ligne crontab. Pour MySQL ou MariaDB, un fichier d'options client accessible en lecture par l'administrateur est simple et fonctionne parfaitement avec les tâches automatisées. Créez/etc/owncloud/db-backup.cnf :
Utilisez les valeurs réelles de votre configuration ownCloud. Si votre base de données est distante, indiquez l'hôte approprié. La documentation MySQL décrit les fichiers d'options pour les programmes clients ; cette approche évite d'exposer directement le mot de passe dans une commande planifiée.
Stockez les informations d'identification de la base de données non surveillée dans un fichier d'options client accessible en lecture par l'utilisateur root au lieu de saisir le mot de passe dans cron.
Étape 4 : Exécutez une sauvegarde manuelle en mode maintenance
La procédure de sauvegarde officielle d'ownCloud recommande d'empêcher tout accès normal et de placer l'instance en mode maintenance avant de sauvegarder la base de données. Pour un déploiement Docker Compose :
Pour une installation traditionnelle depuis le répertoire ownCloud :
sudo -u www-data ./occ maintenance:mode --on
Le mode maintenance bloque toute activité utilisateur normale pendant la création du point de restauration. Par conséquent, une tâche automatisée doit s'exécuter pendant une période de faible trafic et désactiver systématiquement le mode maintenance, même en cas d'échec de la sauvegarde.
Activez le mode maintenance avant de créer le point de récupération afin que l'activité de l'application ne soit pas modifiée pendant la fenêtre de sauvegarde.
Pour MySQL ou MariaDB, testez une sauvegarde manuelle :
La documentation d'ownCloud utilise cette méthode . La documentationmysqldump --single-transaction MySQL sur mysqldump explique qu'elle crée un instantané cohérent pour les tables transactionnelles telles qu'InnoDB sans verrouiller les tables pendant la sauvegarde. Cette option traite les lignes en continu plutôt que de mettre en mémoire tampon une grande table.--single-transaction--quick
La première sauvegarde manuelle devrait se terminer correctement et laisser un fichier non vide dans le répertoire de sauvegarde.
Une fois la sauvegarde manuelle terminée, désactivez le mode maintenance à l'aide de la commande correspondante :
Étape 5 : Intégrez la logique de sauvegarde dans un script à sécurité intégrée
Le script doit s'arrêter en cas d'erreur, enregistrer un horodatage, activer le mode maintenance, créer la sauvegarde, vérifier le fichier compressé, appliquer la période de rétention et garantir la désactivation du mode maintenance à la fin du script. L'exemple suivant suppose une installation classique /var/www/owncloudet une base de données MySQL/MariaDB nomméeowncloud :
Enregistrez le fichier /usr/local/sbin/owncloud-db-backup.sh, rendez-le exécutable avec `docker ps` chmod 700, puis exécutez-le manuellement. Si votre ownCloud est conteneurisé, remplacez les deux occlignes par les commandes de maintenance Docker Compose correspondant à votre déploiement.
Étape 6 : Planifiez-la avec cron
Une fois l'exécution manuelle réussie, planifiez le script. Ouvrez le crontab de root :
Choisissez un horaire correspondant à votre utilisation habituelle. Si la base de données est volumineuse, mesurez d'abord la durée d'une exécution manuelle, car le mode maintenance entraîne une interruption de service visible. Assurez-vous également que cron dispose d'un environnement prévisible : utilisez des chemins absolus dans le script si les commandes requises ne figurent pas dans la configuration par défaut de cron PATH.
Une entrée cron peut exécuter automatiquement le script de sauvegarde testé pendant une période d'inactivité.
Étape 7 : Vérifiez chaque sauvegarde au lieu de vous fier à l’horodatage.
Un fichier daté du jour même ne constitue pas une preuve de récupération de la sauvegarde. Vérifiez au minimum que le fichier n'est pas vide, que gzip ne signale aucune corruption et que le journal des tâches ne contient aucune erreur de vidage.
ls -lh /var/backups/owncloud-db/
gzip -t /var/backups/owncloud-db/owncloud-db-YYYYMMDD-HHMMSS.sql.gz
tail -n 100 /var/log/owncloud-db-backup.log
Pour un test plus rigoureux, restaurez une sauvegarde récente dans une base de données éphémère sur un système hors production. Ne testez pas la restauration en écrasant votre base de données en production. Un exercice de restauration complet vérifie bien plus que l'intégrité des fichiers : il confirme les identifiants, les privilèges de la base de données, la compatibilité de la sauvegarde et la procédure de récupération que votre équipe utiliserait réellement.
Vérifiez l'existence d'une sauvegarde récente et non vide, et confirmez que la tâche planifiée produit bien les fichiers à l'emplacement prévu.
Étape 8 : Vérifier que ownCloud fonctionne de nouveau normalement.
Une fois le script terminé, le mode maintenance devrait être désactivé et les utilisateurs devraient pouvoir se connecter normalement. Consultez l'interface web et examinez le journal de sauvegarde. Une automatisation robuste ne se contente pas de créer une sauvegarde ; elle gère les erreurs de manière sécurisée et ne bloque pas le service en mode maintenance.
Une fois la sauvegarde terminée, vérifiez qu'ownCloud n'est plus en mode maintenance et que l'accès normal aux fichiers est rétabli.
Qu'est-ce qui change si vous utilisez PostgreSQL ?
Pour l'automatisation, privilégiez le mécanisme de fichiers de mots de passe pris en charge par PostgreSQL plutôt que son intégration PGPASSWORDdans le script. Conservez les mêmes principes de maintenance, de conservation, de journalisation et de test de restauration.
Combien de sauvegardes devez-vous conserver ?
Il n'existe pas de durée de conservation unique convenant à tous les serveurs ownCloud. La durée de conservation doit être adaptée à la fréquence d'évolution des données, à la capacité de stockage disponible et à la période sur laquelle vous pourriez avoir besoin de revenir. Quatorze sauvegardes quotidiennes de la base de données constituent un exemple raisonnable pour un petit serveur, mais ne représentent pas une exigence universelle.
Situation
Approche pratique
Petit serveur personnel ou d'équipe
Sauvegarde quotidienne plus 7 à 14 jours de conservation locale et une deuxième copie sur un support de stockage séparé.
Serveur d'entreprise avec des mises à jour fréquentes
Protection quotidienne ou plus fréquente des bases de données, instantanés de fichiers, copies hors hôte et exercices de restauration réguliers.
Déploiement PostgreSQL de grande envergure
Évaluer l'archivage continu natif de PostgreSQL et la restauration à un point précis dans le temps, en plus des sauvegardes logiques.
Données ownCloud chiffrées
Sauvegardez le répertoire de données et l'emplacement de toute clé de chiffrement personnalisée, ainsi que la base de données et la configuration.
Auto-vérification finale
Votre sauvegarde automatisée de base de données est prête uniquement lorsque toutes ces conditions sont remplies :
Vous savez si le serveur utilise MySQL/MariaDB ou PostgreSQL et vous avez vérifié le nom et l'hôte corrects de la base de données.
Le répertoire de sauvegarde est protégé et dispose de suffisamment d'espace libre.
Les informations d'identification ne sont pas exposées dans la commande crontab.
Une sauvegarde manuelle s'effectue avec succès avant que la planification ne soit activée.
Le script quitte toujours le mode maintenance, même après un échec de vidage mémoire.
La tâche planifiée écrit un journal et crée une sauvegarde non vide à temps.
Les anciens dépôts sont enlevés conformément à une politique de rétention délibérée.
Une sauvegarde récente a été restaurée avec succès sur une base de données hors production.
La sauvegarde de la base de données est associée à des sauvegardes des données, de la configuration et des autres répertoires nécessaires d'ownCloud.
Si l'un de ces contrôles échoue, corrigez le problème avant de vous fier à l'automatisation. Un système de sauvegarde n'est utile que si la procédure de restauration a été testée.