================================= Bash - Archive file -x month ================================= .. contents:: :depth: 2 :local: :backlinks: top 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 : :download:`archive_script.sh <./archive_script.sh>` Usage ----- Exécutez le script directement en ligne de commande : .. code-block:: bash ./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 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash 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 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash 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 : .. code-block:: bash chmod +x archive_script.sh 2. Configurez les variables selon vos besoins : .. code-block:: bash SEARCH_DIR="/chemin/vers/source" ARCHIVE_PATH="/chemin/vers/archives" WAITING_MONTH=5 DELETE_ARCHIVED_FILES=true 3. Exécutez le script : .. code-block:: bash ./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.