Fix restore script permissions handling with sudo
Add sudo usage for data directory operations to handle Docker-created files owned by UID 1000. The restore script now properly cleans and extracts data with correct permissions, preventing "Permission denied" errors when restoring backups. Changes: - Use sudo rm for cleaning existing data directory - Use sudo tar for extracting backup data - Add sudo chown to restore proper file ownership (1000:1000) - Remove redundant success message from Makefile restore target 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
1
Makefile
1
Makefile
@@ -78,7 +78,6 @@ restore: ## Restaure depuis une sauvegarde (usage: make restore FILE=backups/git
|
||||
fi
|
||||
@echo -e "$(BLUE)Restauration depuis $(FILE)...$(NC)"
|
||||
@bash scripts/restore.sh "$(FILE)"
|
||||
@echo -e "$(GREEN)Restauration terminée$(NC)"
|
||||
|
||||
## Mise à jour et maintenance
|
||||
|
||||
|
||||
@@ -227,32 +227,37 @@ log "${YELLOW}[5/6] Restauration des données Gitea...${NC}"
|
||||
# Arrêter Gitea s'il tourne
|
||||
docker compose stop gitea 2>/dev/null || true
|
||||
|
||||
# Nettoyer les données existantes de manière sécurisée
|
||||
# Nettoyer les données existantes de manière sécurisée avec les bonnes permissions
|
||||
DATA_DIR="./data"
|
||||
if [ -d "$DATA_DIR" ]; then
|
||||
# Vérifier que c'est bien le bon répertoire
|
||||
if [ "$DATA_DIR" = "./data" ]; then
|
||||
log "Suppression des anciennes données..."
|
||||
# Utiliser find pour une suppression plus sûre
|
||||
find "$DATA_DIR" -mindepth 1 -delete 2>> "$LOG_FILE" || {
|
||||
log "${YELLOW}Avertissement: Échec du nettoyage partiel${NC}"
|
||||
}
|
||||
else
|
||||
log "${RED}Erreur: Répertoire de données invalide: $DATA_DIR${NC}"
|
||||
exit 1
|
||||
log "Suppression des anciennes données avec sudo..."
|
||||
# Utiliser sudo pour supprimer les fichiers appartenant à l'utilisateur Docker
|
||||
if ! sudo rm -rf "$DATA_DIR"/* 2>> "$LOG_FILE"; then
|
||||
log "${YELLOW}Avertissement: Échec du nettoyage${NC}"
|
||||
log "Vous pouvez exécuter manuellement: sudo rm -rf $DATA_DIR/*"
|
||||
read -p "Continuer quand même? (oui/non) " -r
|
||||
if [[ ! $REPLY =~ ^[Oo][Uu][Ii]$ ]]; then
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Créer le répertoire de données
|
||||
mkdir -p "$DATA_DIR"
|
||||
|
||||
# Extraire les données depuis l'archive
|
||||
# Extraire les données depuis l'archive avec sudo pour les permissions
|
||||
log "Extraction des données Gitea..."
|
||||
if ! tar xzf "$BACKUP_DIR/gitea_data.tar.gz" -C "$DATA_DIR" 2>> "$LOG_FILE"; then
|
||||
if ! sudo tar xzf "$BACKUP_DIR/gitea_data.tar.gz" -C "$DATA_DIR" 2>> "$LOG_FILE"; then
|
||||
log "${RED}Erreur: Échec de l'extraction des données Gitea${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Restaurer les bonnes permissions (UID/GID 1000 pour Gitea)
|
||||
log "Restauration des permissions..."
|
||||
if ! sudo chown -R 1000:1000 "$DATA_DIR" 2>> "$LOG_FILE"; then
|
||||
log "${YELLOW}Avertissement: Impossible de changer les permissions${NC}"
|
||||
fi
|
||||
|
||||
# Vérifier les permissions
|
||||
log "Vérification des permissions..."
|
||||
if [ -d "$DATA_DIR/gitea" ]; then
|
||||
|
||||
Reference in New Issue
Block a user