| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #!/bin/bash
- # Variables d'environnement
- BACKUP_DIR=${BACKUP_DIR:-"/backups"}
- DIRECTORIES=${DIRECTORIES:-"/source /source2"}
- RETENTION_DAYS=${RETENTION_DAYS:-14}
- # Array contenant les dossiers à sauvegarder (split des espaces)
- DIRECTORIES_ARRAY=($DIRECTORIES)
- # Message de démarrage
- echo "INFO: Starting backup script (v2.1) with the following variables"
- echo "INFO: - BACKUP_DIR: $BACKUP_DIR"
- echo "INFO: - DIRECTORIES: $DIRECTORIES"
- echo "INFO: - RETENTION_DAYS: $RETENTION_DAYS"
- # Fonction de sortie sur erreur
- exit_with_error() {
- echo "ERROR: $1"
- exit 1
- }
- # Vérification du dossier de backup
- if [ ! -d "$BACKUP_DIR" ]; then
- exit_with_error "Backup directory '$BACKUP_DIR' does not exist!"
- fi
- # Boucle pour chaque dossier dans l'array
- for dir in "${DIRECTORIES_ARRAY[@]}"; do
- # Vérification si le dossier existe
- if [ ! -d "$dir" ]; then
- echo "WARNING: Source directory $dir does not exist. Skipping..."
- continue
- fi
-
- # Création du nom de fichier de backup avec la date
- base_name=$(basename "$dir")
- file_name="${BACKUP_DIR}/${base_name}_$(date +%Y-%m-%d_%H-%M-%S).tar.gz"
-
- echo "INFO: Backuping '$dir'..."
-
- # Création du backup zip
- output=$(tar -czf "$file_name" "$dir" 2>&1)
-
- # Affichage du message de succès ou d'erreur
- if [ $? -eq 0 ]; then
- echo "INFO: Backup of '$dir' successful: $file_name"
- else
- echo "ERROR: Failed to backup '$dir'"
- echo "ERROR: $output"
- continue
- fi
- done
- # Suppression des backups plus vieux que ${RETENTION_DAYS} jours
- echo "INFO: Checking for backups older than ${RETENTION_DAYS} days..."
- old_files=$(find "$BACKUP_DIR" -type f -name "*.tar.gz" -mtime +${RETENTION_DAYS})
- if [ -n "$old_files" ]; then
- echo "INFO: Deleting the following files: $old_files"
-
- # Suppression réelle
- echo "$old_files" | xargs rm -f
- else
- echo "INFO: No old backups to delete."
- fi
|