entrypoint.sh 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #!/bin/bash
  2. # Variables d'environnement
  3. BACKUP_DIR=${BACKUP_DIR:-"/backups"}
  4. DIRECTORIES=${DIRECTORIES:-"/source /source2"}
  5. RETENTION_DAYS=${RETENTION_DAYS:-14}
  6. # Array contenant les dossiers à sauvegarder (split des espaces)
  7. DIRECTORIES_ARRAY=($DIRECTORIES)
  8. # Message de démarrage
  9. echo "INFO: Starting backup script (v2.1) with the following variables"
  10. echo "INFO: - BACKUP_DIR: $BACKUP_DIR"
  11. echo "INFO: - DIRECTORIES: $DIRECTORIES"
  12. echo "INFO: - RETENTION_DAYS: $RETENTION_DAYS"
  13. # Fonction de sortie sur erreur
  14. exit_with_error() {
  15. echo "ERROR: $1"
  16. exit 1
  17. }
  18. # Vérification du dossier de backup
  19. if [ ! -d "$BACKUP_DIR" ]; then
  20. exit_with_error "Backup directory '$BACKUP_DIR' does not exist!"
  21. fi
  22. # Boucle pour chaque dossier dans l'array
  23. for dir in "${DIRECTORIES_ARRAY[@]}"; do
  24. # Vérification si le dossier existe
  25. if [ ! -d "$dir" ]; then
  26. echo "WARNING: Source directory $dir does not exist. Skipping..."
  27. continue
  28. fi
  29. # Création du nom de fichier de backup avec la date
  30. base_name=$(basename "$dir")
  31. file_name="${BACKUP_DIR}/${base_name}_$(date +%Y-%m-%d_%H-%M-%S).tar.gz"
  32. echo "INFO: Backuping '$dir'..."
  33. # Création du backup zip
  34. output=$(tar -czf "$file_name" "$dir" 2>&1)
  35. # Affichage du message de succès ou d'erreur
  36. if [ $? -eq 0 ]; then
  37. echo "INFO: Backup of '$dir' successful: $file_name"
  38. else
  39. echo "ERROR: Failed to backup '$dir'"
  40. echo "ERROR: $output"
  41. continue
  42. fi
  43. done
  44. # Suppression des backups plus vieux que ${RETENTION_DAYS} jours
  45. echo "INFO: Checking for backups older than ${RETENTION_DAYS} days..."
  46. old_files=$(find "$BACKUP_DIR" -type f -name "*.tar.gz" -mtime +${RETENTION_DAYS})
  47. if [ -n "$old_files" ]; then
  48. echo "INFO: Deleting the following files: $old_files"
  49. # Suppression réelle
  50. echo "$old_files" | xargs rm -f
  51. else
  52. echo "INFO: No old backups to delete."
  53. fi