7. Sauvegarde et Mise à jour de Nextcloud 29
1. Sauvegarde :
1.1 Création des répertoires de sauvegarde :
Fichiers :
sudo mkdir -p /backups/nextcloud/files
Base de données :
sudo mkdir -p /backups/nextcloud/database
Permissions :
sudo chmod -R o-rwx /backups/
1.2 Activation du mode Maintenance :
Activation :
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on
Vérification :
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode
1.3 Sauvegarde des fichiers dans un répertoire /backups/nextcloud/
:
Sauf répertoire data et corbeille :
sudo rsync -Aavx /var/www/nextcloud/ \
/backups/nextcloud/files/nextcloud-backup_`date +"%Y%m%d_%H%M%S"`/ \
--exclude={'data/*','*/files_trashbin/files/*'}
Le répertoire de sauvegarde sera /backups/nextcloud/files/nextcloud-backup_20201010_153025/
pour une sauvegarde effectuée le 10 Octobre 2020 à 15:30:25.
Important : Si vous souhaitez tout de même sauvegarder le répertoire data et la corbeille, il faudra supprimer le paramètre --exclude
.
1.4 Sauvegarde de la base de données MySQL/MariaDB :
sudo mysqldump --single-transaction -h localhost -u root nextcloud | \
sudo tee /backups/nextcloud/database/nextcloud-sqlbkp_`date +"%Y%m%d_%H%M%S"`.bak
-h : nom ou IP du serveur de base de données
-u : utilisateur de la base de données
-p : mot de passe de l’utilisateur
Attention :
– Pas d’espace entre -p et le mot de passe
– Remplacer VotreMotDePasse par le mot de passe de l’utilisateur.
1.4 Désactivation du mode Maintenance :
Désactivation :
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off
Vérification :
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode
1.5 Exemple de script de sauvegarde :
Sauvegarde de base de données MySql/MariaDB :
#!/bin/bash
# Path
nextcloudPath=/var/www/nextcloud/
occPath=$nextcloudPath\occ
sourcePath=/var/www/nextcloud/
mainDestinationPath=/backups/nextcloud/`date +"%Y/%m"`/
filesDestinationPath=$mainDestinationPath\files/
databaseDestinationPath=$mainDestinationPath\database/
# Database
dbhost=$(cat $nextcloudPath\config/config.php | egrep "dbhost" | sed 's/^.*\=> *'\''//' | sed 's/'\'',.*$//')
dbname=$(cat $nextcloudPath\config/config.php | egrep "dbname" | sed 's/^.*\=> *'\''//' | sed 's/'\'',.*$//')
dbuser=$(cat $nextcloudPath\config/config.php | egrep "dbuser" | sed 's/^.*\=> *'\''//' | sed 's/'\'',.*$//')
dbpassword=$(cat $nextcloudPath\config/config.php | egrep "dbpassword" | sed 's/^.*\=> *'\''//' | sed 's/'\'',.*$//')
# Verbose
cyan='\e[1;36m'
white='\e[1;37m'
neutral='\e[0;m'
echo -e "${cyan}dbhost : ${white}$dbhost${neutral}"
echo -e "${cyan}dbname : ${white}$dbname${neutral}"
echo -e "${cyan}dbuser : ${white}$dbuser${neutral}"
#echo -e "${cyan}dbpassword : ${white}$dbpassword${neutral}"
read -t 10 -p "The backup will start after 10 seconds" || true
# Destinations creation
mkdir -p $filesDestinationPath
mkdir -p $databaseDestinationPath
chmod -R o-rwx /backups/
# Maintenance mode activation
sudo -u www-data php $occPath maintenance:mode --on
# Database backup
mysqldump --single-transaction -h $dbhost -u $dbuser -p$dbpassword $dbname > $databaseDestinationPath\nextcloud-sqlbkp_`date +"%Y%m%d_%H%M%S"`.bak
# Files backup
rsync -Aavx $sourcePath $filesDestinationPath\nextcloud-backup_`date +"%Y%m%d_%H%M%S"`/ --exclude={'data/*','*/files_trashbin/files/*'}
#rsync -Aavx $sourcePath $filesDestinationPath\nextcloud-backup_`date +"%Y%m%d_%H%M%S"`/
# Maintenance mode deactivation
sudo -u www-data php $occPath maintenance:mode --off
exit 0
1.6 Exemple de restauration : Nextcloud – Restoring backup