← Retour au blog

Tutoriel

Sauvegarder son Nextcloud vers S3

Protégez les fichiers et la base de données de votre instance Nextcloud auto-hébergée avec une sauvegarde automatisée vers S3.

Mis à jour en novembre 2026 · 8 min de lecture

Nextcloud est devenu la plateforme de référence pour héberger soi-même son cloud de fichiers, d'agenda et de contacts. Mais un Nextcloud auto-hébergé n'est protégé que par les sauvegardes que vous mettez en place vous-même. Cet article explique comment sauvegarder une instance Nextcloud complète — fichiers et base de données — vers votre espace Bonjour Backup.

Deux besoins à ne pas confondre

Étendre le stockage de Nextcloud avec un bucket S3 (via l'application « External Storage ») et sauvegarder une instance Nextcloud existante sont deux choses différentes. Cet article traite de la sauvegarde : mettre une copie de secours de votre Nextcloud (tel qu'il est aujourd'hui) sur un stockage externe, indépendant du serveur qui l'héberge.

Ce qu'il faut sauvegarder

Une instance Nextcloud repose sur trois éléments, à sauvegarder ensemble pour qu'une restauration soit cohérente :

1. Passer Nextcloud en mode maintenance

Pour garantir une sauvegarde cohérente, il est recommandé de bloquer temporairement les écritures pendant la sauvegarde :

sudo -u www-data php occ maintenance:mode --on

2. Exporter la base de données

Pour MySQL/MariaDB :

mysqldump --single-transaction -u nextcloud_user -p nextcloud_db > /chemin/de/sauvegarde/nextcloud-db.sql

Pour PostgreSQL :

pg_dump -U nextcloud_user nextcloud_db > /chemin/de/sauvegarde/nextcloud-db.sql

3. Réactiver Nextcloud

sudo -u www-data php occ maintenance:mode --off

Le mode maintenance ne doit rester actif que le temps de l'export de la base de données, pas pendant tout le transfert vers S3.

4. Envoyer le tout vers votre bucket S3

Utilisez rclone (déjà configuré avec un remote bonjourbackup) pour envoyer le dump SQL, le dossier config et le dossier data :

DATE=$(date +%Y-%m-%d)

rclone copy /chemin/de/sauvegarde/nextcloud-db.sql \
  bonjourbackup:mon-bucket/nextcloud/$DATE/

rclone copy /var/www/nextcloud/config \
  bonjourbackup:mon-bucket/nextcloud/$DATE/config

rclone sync /var/www/nextcloud/data \
  bonjourbackup:mon-bucket/nextcloud/data --update

Le dossier data étant généralement volumineux, on utilise sync --update pour ne transférer que les fichiers nouveaux ou modifiés depuis la dernière sauvegarde, tandis que la base de données et la configuration sont archivées par date pour garder plusieurs points de restauration.

5. Regrouper les étapes dans un script

#!/bin/bash
set -e
DATE=$(date +%Y-%m-%d)
BACKUP_DIR=/tmp/nextcloud-backup

mkdir -p "$BACKUP_DIR"
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on

mysqldump --single-transaction -u nextcloud_user -p'MOT_DE_PASSE' nextcloud_db \
  > "$BACKUP_DIR/nextcloud-db.sql"

sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off

rclone copy "$BACKUP_DIR/nextcloud-db.sql" bonjourbackup:mon-bucket/nextcloud/$DATE/
rclone copy /var/www/nextcloud/config bonjourbackup:mon-bucket/nextcloud/$DATE/config
rclone sync /var/www/nextcloud/data bonjourbackup:mon-bucket/nextcloud/data --update

rm -rf "$BACKUP_DIR"

Planifiez ce script via cron pour une exécution quotidienne, en dehors des heures d'utilisation de votre Nextcloud :

0 3 * * * /chemin/vers/backup-nextcloud.sh >> /var/log/backup-nextcloud.log 2>&1

Sécurisez le mot de passe de votre script

Évitez de laisser un mot de passe en clair dans un script accessible à d'autres utilisateurs du serveur. Préférez un fichier ~/.my.cnf protégé (chmod 600) pour vos identifiants MySQL, ou un gestionnaire de secrets si votre infrastructure en dispose.

N'oubliez pas de tester une restauration complète sur un environnement de test au moins une fois, comme le rappelle notre article sur la règle 3-2-1 : une sauvegarde qui n'a jamais été restaurée reste une inconnue.

Pas encore d'espace de sauvegarde S3 ?

Créez votre bucket en quelques minutes, à partir de 12 € HT par To et par mois.

Créer mon espace