Défi
Énoncé
Écrire un script bash qui collecte dans le répertoire courant tous les fichiers ordinaires dont la date de dernière modification est strictement antérieure à 7 jours, puis les compresse dans l'archive vieux.tar.gz. Les sous-dossiers sont ignorés. Si aucun fichier ne correspond, le script affiche aucun fichier à archiver et se termine avec le code 0 sans créer d'archive.
Contraintes
- Utiliser
find . -maxdepth 1 -type f -mtime +7pour la sélection. - Le fichier
vieux.tar.gzest créé dans le répertoire courant. - Ne pas inclure
vieux.tar.gzlui-même s'il existe déjà (utiliser--exclude). - Aucun outil autre que
find,taret les builtins bash n'est nécessaire. - Compatible bash 4+ et GNU coreutils (Linux).
Exemple
Répertoire courant (les dates entre parenthèses indiquent l'ancienneté) :
ancien1.log (modifié il y a 10 jours)
ancien2.csv (modifié il y a 8 jours)
recent.txt (modifié il y a 2 jours)
Exécution :
$ bash archiver.sh
Résultat :
vieux.tar.gz (contient ancien1.log et ancien2.csv)
recent.txt (inchangé)
Vérification du contenu de l'archive :
$ tar -tzf vieux.tar.gz
./ancien1.log
./ancien2.csv