add scripts
This commit is contained in:
75
scripts/backup.sh
Normal file
75
scripts/backup.sh
Normal file
@@ -0,0 +1,75 @@
|
||||
#!/bin/bash
|
||||
# scripts/backup.sh - Backup complet Nextcloud
|
||||
|
||||
set -e
|
||||
|
||||
source .env
|
||||
|
||||
BACKUP_DIR="${BACKUP_DESTINATION:-./backups}"
|
||||
DATE=$(date +%Y%m%d_%H%M%S)
|
||||
BACKUP_NAME="nextcloud_backup_$DATE"
|
||||
BACKUP_PATH="$BACKUP_DIR/$BACKUP_NAME"
|
||||
|
||||
echo "🔧 Démarrage du backup: $BACKUP_NAME"
|
||||
|
||||
# Créer le dossier de backup
|
||||
mkdir -p "$BACKUP_PATH"
|
||||
|
||||
# 1. Activer le mode maintenance
|
||||
echo "⏸️ Activation du mode maintenance..."
|
||||
docker-compose exec -T -u www-data nextcloud php occ maintenance:mode --on
|
||||
|
||||
# 2. Backup de la base de données
|
||||
echo "💾 Backup de la base de données..."
|
||||
docker-compose exec -T db mysqldump \
|
||||
-u"$MYSQL_USER" \
|
||||
-p"$MYSQL_PASSWORD" \
|
||||
"$MYSQL_DATABASE" \
|
||||
--single-transaction \
|
||||
--quick \
|
||||
--lock-tables=false \
|
||||
> "$BACKUP_PATH/database.sql"
|
||||
|
||||
# 3. Backup des fichiers de config
|
||||
echo "⚙️ Backup de la configuration..."
|
||||
tar -czf "$BACKUP_PATH/config.tar.gz" \
|
||||
-C ./data/config .
|
||||
|
||||
# 4. Backup des données utilisateurs (optionnel, peut être énorme)
|
||||
echo "📁 Backup des données utilisateurs..."
|
||||
# Pour un backup incrémental, utilisez rsync
|
||||
rsync -a --info=progress2 \
|
||||
./data/data/ \
|
||||
"$BACKUP_PATH/data/" \
|
||||
--exclude 'appdata_*/preview' \
|
||||
--exclude '*/cache' \
|
||||
--exclude '*/thumbnails'
|
||||
|
||||
# Ou pour un tar compressé (long):
|
||||
# tar -czf "$BACKUP_PATH/data.tar.gz" \
|
||||
# --exclude='appdata_*/preview' \
|
||||
# -C ./data/data .
|
||||
|
||||
# 5. Backup des apps
|
||||
echo "📦 Backup des apps personnalisées..."
|
||||
if [ -d "./data/custom_apps" ]; then
|
||||
tar -czf "$BACKUP_PATH/apps.tar.gz" \
|
||||
-C ./data/custom_apps .
|
||||
fi
|
||||
|
||||
# 6. Désactiver le mode maintenance
|
||||
echo "▶️ Désactivation du mode maintenance..."
|
||||
docker-compose exec -T -u www-data nextcloud php occ maintenance:mode --off
|
||||
|
||||
# 7. Créer une archive complète
|
||||
echo "🗜️ Compression finale..."
|
||||
cd "$BACKUP_DIR"
|
||||
tar -czf "$BACKUP_NAME.tar.gz" "$BACKUP_NAME/"
|
||||
rm -rf "$BACKUP_NAME"
|
||||
|
||||
# 8. Nettoyer les vieux backups
|
||||
echo "🧹 Nettoyage des backups > ${BACKUP_RETENTION_DAYS:-30} jours..."
|
||||
find "$BACKUP_DIR" -name "nextcloud_backup_*.tar.gz" -mtime +${BACKUP_RETENTION_DAYS:-30} -delete
|
||||
|
||||
echo "✅ Backup terminé: $BACKUP_DIR/$BACKUP_NAME.tar.gz"
|
||||
du -h "$BACKUP_DIR/$BACKUP_NAME.tar.gz"
|
||||
6
scripts/occ.sh
Normal file
6
scripts/occ.sh
Normal file
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
# scripts/occ.sh - Wrapper pour commandes OCC
|
||||
|
||||
set -e
|
||||
|
||||
docker-compose exec -u www-data nextcloud php occ "$@"
|
||||
70
scripts/restore.sh
Normal file
70
scripts/restore.sh
Normal file
@@ -0,0 +1,70 @@
|
||||
#!/bin/bash
|
||||
# scripts/restore.sh - Restauration d'un backup
|
||||
|
||||
set -e
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
echo "Usage: $0 <backup_file.tar.gz>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
BACKUP_FILE="$1"
|
||||
|
||||
if [ ! -f "$BACKUP_FILE" ]; then
|
||||
echo "❌ Fichier introuvable: $BACKUP_FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "⚠️ ATTENTION: Cette opération va écraser les données actuelles !"
|
||||
read -p "Continuer? (yes/no): " confirm
|
||||
|
||||
if [ "$confirm" != "yes" ]; then
|
||||
echo "Annulé."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Extraire le backup
|
||||
TEMP_DIR=$(mktemp -d)
|
||||
echo "📂 Extraction vers $TEMP_DIR..."
|
||||
tar -xzf "$BACKUP_FILE" -C "$TEMP_DIR"
|
||||
|
||||
BACKUP_DIR=$(ls -1 "$TEMP_DIR" | head -n1)
|
||||
|
||||
# Arrêter les services
|
||||
echo "⏹️ Arrêt des services..."
|
||||
docker-compose down
|
||||
|
||||
# Restaurer la base de données
|
||||
echo "💾 Restauration de la base de données..."
|
||||
docker-compose up -d db
|
||||
sleep 10
|
||||
|
||||
docker-compose exec -T db mysql \
|
||||
-u"$MYSQL_USER" \
|
||||
-p"$MYSQL_PASSWORD" \
|
||||
"$MYSQL_DATABASE" \
|
||||
< "$TEMP_DIR/$BACKUP_DIR/database.sql"
|
||||
|
||||
# Restaurer les fichiers
|
||||
echo "📁 Restauration des fichiers..."
|
||||
tar -xzf "$TEMP_DIR/$BACKUP_DIR/config.tar.gz" -C ./data/config
|
||||
tar -xzf "$TEMP_DIR/$BACKUP_DIR/data.tar.gz" -C ./data/data
|
||||
|
||||
if [ -f "$TEMP_DIR/$BACKUP_DIR/apps.tar.gz" ]; then
|
||||
tar -xzf "$TEMP_DIR/$BACKUP_DIR/apps.tar.gz" -C ./data/custom_apps
|
||||
fi
|
||||
|
||||
# Redémarrer
|
||||
echo "▶️ Redémarrage des services..."
|
||||
docker-compose up -d
|
||||
|
||||
# Réparer et scanner
|
||||
echo "🔧 Réparation..."
|
||||
sleep 30
|
||||
docker-compose exec -u www-data nextcloud php occ maintenance:repair
|
||||
docker-compose exec -u www-data nextcloud php occ files:scan --all
|
||||
|
||||
# Nettoyer
|
||||
rm -rf "$TEMP_DIR"
|
||||
|
||||
echo "✅ Restauration terminée !"
|
||||
47
scripts/update.sh
Normal file
47
scripts/update.sh
Normal file
@@ -0,0 +1,47 @@
|
||||
#!/bin/bash
|
||||
# scripts/update.sh - Mise à jour Nextcloud
|
||||
|
||||
set -e
|
||||
|
||||
echo "🔄 Mise à jour de Nextcloud"
|
||||
|
||||
# Backup avant update
|
||||
echo "💾 Backup de sécurité..."
|
||||
bash scripts/backup.sh
|
||||
|
||||
# Mode maintenance
|
||||
echo "⏸️ Mode maintenance activé"
|
||||
docker-compose exec -u www-data nextcloud php occ maintenance:mode --on
|
||||
|
||||
# Pull nouvelle image
|
||||
echo "📥 Téléchargement de la nouvelle version..."
|
||||
docker-compose pull nextcloud
|
||||
|
||||
# Restart
|
||||
echo "🔄 Redémarrage..."
|
||||
docker-compose up -d --force-recreate nextcloud cron
|
||||
|
||||
# Attendre que Nextcloud soit prêt
|
||||
echo "⏳ Attente du démarrage..."
|
||||
sleep 30
|
||||
|
||||
# Upgrade via OCC
|
||||
echo "⬆️ Lancement de l'upgrade..."
|
||||
docker-compose exec -u www-data nextcloud php occ upgrade
|
||||
|
||||
# Scan et indices
|
||||
echo "🔍 Scan des fichiers..."
|
||||
docker-compose exec -u www-data nextcloud php occ files:scan --all
|
||||
|
||||
echo "📊 Ajout des indices manquants..."
|
||||
docker-compose exec -u www-data nextcloud php occ db:add-missing-indices
|
||||
|
||||
echo "🔧 Conversion des colonnes..."
|
||||
docker-compose exec -u www-data nextcloud php occ db:convert-filecache-bigint --no-interaction
|
||||
|
||||
# Désactiver maintenance
|
||||
echo "▶️ Désactivation du mode maintenance"
|
||||
docker-compose exec -u www-data nextcloud php occ maintenance:mode --off
|
||||
|
||||
echo "✅ Mise à jour terminée !"
|
||||
docker-compose exec -u www-data nextcloud php occ status
|
||||
Reference in New Issue
Block a user