Article
Sauvegarde Nextcloud Sur Serveur Ubuntu Vers Asustor Nas
Réalisation d'un script de sauvegarde pour Nextcloud vers un NAS Asustor sous ADM 5.0
Étape 1 : Configuration sur l'Asustor (ADM 5)
NFS permet à votre serveur Ubuntu de voir un dossier du NAS comme s'il s'agissait d'un disque dur interne.
-
Activer le service : Allez dans Services > NFS et cochez "Activer le service NFS".
-
Préparer le dossier : Allez dans Contrôle d'accès > Dossiers partagés. Créez un dossier nommé
backup_nextcloud. -
Régler les droits (Le plus important) : Cliquez sur le dossier
backup_nextcloud> Privilèges NFS > Ajouter :
-
IP :
192.168.1.##(L'IP de votre Ubuntu). -
Privilège : Lecture / Écriture.
-
Squash : Map root to admin (Cela permet à l'utilisateur root d'Ubuntu d'écrire sur le NAS).
Étape 2 : Préparation sur le serveur Ubuntu
Il faut installer les outils nécessaires et configurer l'accès automatique à la base de données.
- Installer le client NFS :
sudo apt update && sudo apt install nfs-common -y
-
Automatiser le mot de passe SQL* :
Pour que le script puisse sauvegarder la base de données sans vous demander de mot de passe, créez ce fichier :
sudo nano /root/.my.cnf
Collez ceci (en remplaçant par vos vrais identifiants Nextcloud) :
[mysqldump]
user=votre_utilisateur_db
password=votre_mot_de_passe_db
Sécurisez le fichier : sudo chmod 600 /root/.my.cnf
Étape 3 : Le Script de Sauvegarde Final
Créez le fichier :
`sudo nano /usr/local/bin/backup_nextcloud.sh`
et collez le code ci-dessous.
#!/bin/bash
# --- CONFIGURATION ---
NEXTCLOUD_DIR="/var/www/nextcloud"
DOCS_DIR="/home/master/documents"
MOUNT_POINT="/mnt/asustor_backup"
NAS_IP="192.168.1.##"
NAS_EXPORT="/volume1/backup_nextcloud"
DB_NAME="nextcloud_db"
TIMESTAMP=$(date +"%Y-%m-%d")
# 1. Vérification du Montage
if ! mountpoint -q $MOUNT_POINT; then
mkdir -p $MOUNT_POINT
mount -t nfs $NAS_IP:$NAS_EXPORT $MOUNT_POINT
if [ $? -ne 0 ]; then echo "Erreur Montage NAS"; exit 1; fi
fi
# 2. Nettoyage / Création des dossiers sur le NAS
mkdir -p $MOUNT_POINT/nextcloud_data $MOUNT_POINT/db $MOUNT_POINT/personal_docs
# 3. Sauvegarde Nextcloud
echo "Mode maintenance ON..."
sudo -u www-data php $NEXTCLOUD_DIR/occ maintenance:mode --on
echo "Sauvegarde Base de données..."
mysqldump --single-transaction $DB_NAME > $MOUNT_POINT/db/db_$TIMESTAMP.sql
echo "Synchronisation Nextcloud..."
# Options -rlptD pour éviter les erreurs de permissions ADM 5
rsync -rlptD --delete --no-perms --no-owner --no-group $NEXTCLOUD_DIR/ $MOUNT_POINT/nextcloud_data/
sudo -u www-data php $NEXTCLOUD_DIR/occ maintenance:mode --off
echo "Mode maintenance OFF."
# 4. Sauvegarde Documents
echo "Sauvegarde Documents personnels..."
rsync -rlptD --delete --no-perms --no-owner --no-group $DOCS_DIR/ $MOUNT_POINT/personal_docs/
# 5. Nettoyage des vieux SQL (15 jours)
find $MOUNT_POINT/db/ -name "*.sql" -mtime +15 -delete
echo "Sauvegarde terminée !"
Rendez le script exécutable :
sudo chmod +x /usr/local/bin/backup_nextcloud.sh
Étape 4 : Automatisation (Crontab)
Pour que la sauvegarde se lance toute seule chaque nuit à 3h00 du matin :
-
Ouvrez le planificateur :
sudo crontab -e -
Ajoutez cette ligne tout en bas :
00 03 * * * /usr/local/bin/backup_nextcloud.sh >> /var/log/nextcloud_backup.log 2>&1
Comment vérifier que tout va bien ?
- Demain matin : Tapez
cat /var/log/nextcloud_backup.log
pour voir le rapport de la nuit.
-
Sur le NAS : Connectez-vous à l'interface Asustor et vérifiez que les dossiers
db,nextcloud_dataetpersonal_docscontiennent bien vos fichiers.