Bash - Archive file -x month

Auteur : CBillet Version : 1.0 Date de création : 27/12/2024

Description

Ce script permet d’archiver les fichiers créés pendant un mois spécifique. Il identifie, compresse, et, si configuré, supprime les fichiers archivés en utilisant des outils Linux standard tels que find, tar, et df.

Pour télécharger le script, suivez ce lien : archive_script.sh

Usage

Exécutez le script directement en ligne de commande :

./archive_script.sh

Options

Le script utilise les variables suivantes pour contrôler son comportement :

  • SEARCH_DIR : Répertoire source contenant les fichiers à archiver.

  • ARCHIVE_PATH : Répertoire cible pour les archives créées.

  • WAITING_MONTH : Nombre de mois précédents à analyser pour l’archivage. - 0 pour le mois en cours. - 1 pour le mois précédent, etc.

  • DELETE_ARCHIVED_FILES : Active ou désactive la suppression des fichiers archivés après compression (true ou false).

Expressions régulières et validation des entrées

Le script ne contient pas d’expressions régulières explicites mais utilise les fonctions internes des outils Linux pour :

  • Identifier les fichiers correspondant à une plage de dates via find :

    • -newermt “$MONTH_FILTER-01”

    • ! -newermt “$MONTH_FILTER-31 23:59:59”

Exemples d’utilisation

Exemple 1 : Archiver les fichiers créés 5 mois en arrière

WAITING_MONTH=5
./archive_script.sh

Explications :

  • Recherche les fichiers créés en juin 2023 (si le script est exécuté en janvier 2024).

  • Les fichiers trouvés sont compressés dans une archive .tgz située dans le répertoire défini par ARCHIVE_PATH.

Exemple 2 : Archiver le mois précédent sans supprimer les fichiers originaux

WAITING_MONTH=1
DELETE_ARCHIVED_FILES=false
./archive_script.sh

Explications :

  • Recherche les fichiers du mois précédent (décembre 2023 si exécuté en janvier 2024).

  • Les fichiers originaux sont conservés après l’archivage.

Flux du Script

  1. Identification des fichiers cibles : - Détermine la plage de dates basée sur WAITING_MONTH. - Recherche les fichiers correspondants dans SEARCH_DIR.

  2. Vérification des archives existantes : - Liste toutes les archives existantes pour éviter les conflits de noms.

  3. Vérification de l’espace disque : - Calcule la taille estimée de l’archive et compare avec l’espace disponible.

  4. Création de l’archive : - Compresse les fichiers trouvés et ajoute un fichier de métadonnées.

  5. Suppression optionnelle des fichiers originaux : - Supprime les fichiers archivés si DELETE_ARCHIVED_FILES=true.

Gestion des erreurs

  • Si un fichier ou un répertoire est introuvable, le script affiche un message d’erreur et s’arrête.

  • Si l’espace disque est insuffisant, le script annule l’archivage et affiche un message détaillé.

  • Toutes les erreurs sont enregistrées dans les logs via la commande logger.

Format de sortie

  • L’archive générée est au format .tgz et inclut :

    • Les fichiers cibles.

    • Un fichier archive_metadata.txt contenant :

      • La liste des fichiers inclus.

      • Les archives précédentes.

  • Logs :

    • Les messages d’exécution et d’erreur sont enregistrés dans les logs du système avec le tag archive_script.

Sécurité

  • Assurez-vous que les répertoires définis dans SEARCH_DIR et ARCHIVE_PATH sont protégés par des permissions strictes.

  • Ne pas exécuter le script en tant qu’utilisateur root sauf si nécessaire.

  • Les fichiers archivés doivent être déplacés dans un stockage sécurisé après leur création.

Instructions d’exécution

  1. Rendez le script exécutable :

chmod +x archive_script.sh
  1. Configurez les variables selon vos besoins :

SEARCH_DIR="/chemin/vers/source"
ARCHIVE_PATH="/chemin/vers/archives"
WAITING_MONTH=5
DELETE_ARCHIVED_FILES=true
  1. Exécutez le script :

./archive_script.sh

Notes supplémentaires

  • Si aucune archive n’est trouvée pour la période définie, un message informatif est affiché.

  • Assurez-vous que ARCHIVE_PATH dispose d’un espace disque suffisant pour éviter des interruptions.