Nous avons déjà expliqué comment rechercher et supprimer manuellement des fichiers de plus de X jours à l'aide de la commande "find" sous Linux . Aujourd'hui, nous ferons de même, mais uniquement si les fichiers n'ont pas été consultés pendant un certain temps. Dites bonjour à "Tmpwatch" , un utilitaire de ligne de commande pour supprimer de manière récursive les fichiers qui n'ont pas été consultés depuis un certain temps. Pas seulement les fichiers, tmpwatch supprimera également les répertoires vides.
Par défaut, Tmpwatch décidera quels fichiers/répertoires doivent être supprimés en fonction de leur atime
(temps d'accès). Vous pouvez bien sûr modifier ce comportement en utilisant ctime
(heure de changement d'inode), mtime
(temps de modification) également. Normalement, Tmpwatch peut être utilisé pour supprimer le contenu de /tmp
répertoire et d'autres éléments inutilisés et indésirables comme les anciens fichiers journaux.
Un avertissement important !!
Avant de commencer à utiliser cet outil, vous devez savoir que Tmpwatch supprimera les fichiers et les répertoires de manière récursive en fonction des critères donnés. Ne pas exécuter tmpwatch dans / (répertoire racine) . Ce répertoire contient des fichiers importants nécessaires au bon fonctionnement du système Linux. Si vous ne faites pas assez attention, tmpwatch supprimera les fichiers et répertoires système importants qui correspondent aux critères donnés dans l'ensemble du répertoire racine. Il n'y a pas de mécanisme de sauvegarde intégré à l'outil Tmpwatch pour vous empêcher de l'exécuter sur le répertoire racine. Il n'y a donc aucun moyen d'annuler l'opération. Vous êtes prévenu !
Installer Tmpwatch sur Linux
Tmpwatch est disponible dans les dépôts par défaut de la plupart des distributions Linux.
Sur Fedora, CentOS, RHEL, AlmaLinux et Rocky Linux, vous pouvez l'installer à l'aide de la commande :
$ sudo dnf install tmpwatch
Sur openSUSE :
$ sudo zypper install tmpwatch
Sur Debian et ses dérivés comme Ubuntu, Tmpwatch est disponible sous un nom différent, c'est-à-dire Tmpreaper . Tmpreaper est principalement basé sur `tmpwatch-1.2/1.4' par Erik Troan de Redhat. Maintenant, tmpreaper est maintenu pour Debian par Paul Slootman .
Pour installer tmpreaper sur Debian, Ubuntu, Linux Mint, exécutez :
$ sudo apt install tmpreaper
Pour le lancer, lancez :
$ tmpreaper <options>
Ou entrez le chemin complet :
$ /usr/sbin/tmpreaper <options>
Supprimer les fichiers qui n'ont pas été consultés pendant un certain temps à l'aide de Tmpwatch / Tmpreaper
L'utilisation de Tmpwatch et de Tmpreaper est presque la même. Si vous utilisez des systèmes basés sur Debian, remplacez "Tmpwatch" par "Tmpreaper" dans les exemples suivants.
Supprimer les fichiers qui ne sont pas consultés plus de X jours
Pour supprimer des fichiers de plus de 10 jours, exécutez :
tmpwatch 10d /var/log/
La commande ci-dessus supprimera tous les fichiers et répertoires vides qui ne sont pas consultés plus de 10 jours à partir de /var/log/
dossier.
Supprimer les fichiers qui ne sont pas modifiés plus de X jours
Comme je l'ai déjà dit, Tmpwatch supprimera les fichiers en fonction de leur temps d'accès. Vous pouvez également supprimer des fichiers en fonction de leur heure de modification (mtime) en utilisant -m
option.
Par exemple, la commande suivante supprimera les fichiers qui ne sont pas modifiés pendant les 10 jours dans /var/log/
dossier.
tmpwatch -m 10d /var/log/
Ici, -m
fait référence à l'heure de modification et d
est le
d
- pendant des jours,h
- pendant des heures,m
- pendant quelques minutes,s
- pendant quelques secondes.
Heures est la valeur par défaut.
Par exemple, pour supprimer des fichiers qui n'ont pas été modifiés depuis 10 heures , lancez simplement :
tmpwatch -m 10 /var/log/
Comme vous l'avez peut-être remarqué, je n'ai pas utilisé le paramètre time_spec dans la commande ci-dessus. Parce que, h (pendant des heures) est le paramètre par défaut, nous n'avons donc pas à le mentionner lors de la suppression de fichiers qui n'ont pas été modifiés au cours des X dernières heures.
Supprimer les liens symboliques
Si vous souhaitez supprimer des liens symboliques, pas seulement des fichiers et des répertoires normaux, utilisez -s
comme ci-dessous.
tmpwatch -s 10 /var/log/
Supprimer tous les fichiers
Pour supprimer tous les types de fichiers, pas seulement les fichiers normaux, les liens symboliques et les répertoires, utilisez -a
option.
tmpwatch -a 10 /var/log/
La commande ci-dessus supprimera tous les types de fichiers, y compris les fichiers normaux, les liens symboliques et les répertoires dans /var/log/
dossier.
Exclure les répertoires de la suppression
Parfois, vous voudrez peut-être supprimer des fichiers, mais pas des répertoires. si c'est le cas, la commande serait :
tmpwatch -am 10 --nodirs /var/log/
La commande ci-dessus supprimera tous les fichiers à l'exception des répertoires qui n'ont pas été modifiés au cours des 10 dernières heures.
Effectuer un test sans rien supprimer
Parfois, vous voudrez peut-être voir quels fichiers vont réellement être supprimés. Cela sera utile lors de l'exécution de Tmpwatch sur un répertoire important. Si c'est le cas, lancez Tmpwatch en mode test avec -t
option.
tmpwatch -t 30 /var/log/
Exemple de sortie du serveur CentOS 7 :
removing file /var/log/wtmp removing directory /var/log/ppp if empty removing directory /var/log/tuned if empty removing directory /var/log/anaconda if empty removing file /var/log/dmesg.old removing file /var/log/boot.log removing file /var/log/dnf.librepo.log
Sur les systèmes basés sur Debian, vous verrez une sortie comme ci-dessous.
$ tmpreaper -t 30 /var/log/ (PID 1803) Pretending to clean up directory `/var/log/'. (PID 1804) Pretending to clean up directory `apache2'. Pretending to remove file `apache2/error.log'. Pretending to remove file `apache2/access.log'. Pretending to remove file `apache2/other_vhosts_access.log'. (PID 1804) Back from recursing down `apache2'. (PID 1804) Pretending to clean up directory `dbconfig-common'. Pretending to remove file `dbconfig-common/dbc.log'. (PID 1804) Back from recursing down `dbconfig-common'. (PID 1804) Pretending to clean up directory `dist-upgrade'. (PID 1804) Back from recursing down `dist-upgrade'. (PID 1804) Pretending to clean up directory `lxd'. (PID 1804) Back from recursing down `lxd'. Pretending to remove file `/var/log//cloud-init.log'. (PID 1804) Pretending to clean up directory `landscape'. Pretending to remove file `landscape/sysinfo.log'. (PID 1804) Back from recursing down `landscape'. [...]
Cela ne fera que simuler l'opération, mais ne supprimera rien. Tmpwatch effectuera simplement une simulation et vous montrera quels fichiers vont être supprimés dans la sortie.
Forcer la suppression du fichier
Si vous souhaitez supprimer de force les fichiers, utilisez -f
option.
tmpwatch -f 10h /var/log/
Normalement, les fichiers appartenant à l'utilisateur actuel, sans accès en écriture, ne sont pas supprimés. Le -f
l'option les supprimera également.
Ignorer la suppression de certains fichiers
Tmpreaper a une option pour ignorer les fichiers de la suppression. Cela sera utile lorsque vous souhaitez conserver certains types de fichiers et supprimer tout le reste. Si c'est le cas, utilisez --protect
option.
tmpreaper --protect '*.txt' -t 10h /var/log/
Cette commande ignorera tous les fichiers qui ont .txt
extension de la suppression
Exemple de résultat :
(PID 2623) Pretending to clean up directory `/var/log/'. (PID 2624) Pretending to clean up directory `apache2'. Pretending to remove file `apache2/error.log'. Pretending to remove file `apache2/access.log'. Pretending to remove file `apache2/other_vhosts_access.log'. (PID 2624) Back from recursing down `apache2'. (PID 2624) Pretending to clean up directory `dbconfig-common'. Pretending to remove file `dbconfig-common/dbc.log'. (PID 2624) Back from recursing down `dbconfig-common'. (PID 2624) Pretending to clean up directory `dist-upgrade'. (PID 2624) Back from recursing down `dist-upgrade'. Pretending to remove empty directory `dist-upgrade'. Entry matching `--protect' pattern skipped. `ostechnix.txt' (PID 2624) Pretending to clean up directory `lxd'.
Comme vous pouvez le voir, Tmpreaper ignore le *.txt
fichiers de la suppression.
Cette option n'est pas disponible dans Tmpwatch, soit dit en passant.
Configuration de la tâche cron pour supprimer périodiquement des fichiers
Vous ne voudrez peut-être pas exécuter manuellement Tmpwatch/Tmpreaper tout le temps. Dans ce cas, vous pouvez configurer une tâche cron pour automatiser le processus de nettoyage.
Lors de l'installation de Tmpreaper , il créera une tâche cron quotidienne (/etc/cron.daily/tmpreaper
). Cette tâche lira les options de /etc/timereaper.conf
déposer et agir en conséquence. Ouvrez le fichier et modifiez les valeurs selon vos besoins. Par défaut, Tmpreaper supprimera les fichiers datant de 7 jours. Vous pouvez cependant changer cela en modifiant la valeur "TMPREAPER_TIME=7d"
dans le fichier tmpreaper.conf.
Si vous utilisez "Tmpwatch", vous devez créer manuellement une tâche cron et y insérer l'entrée cron.
# crontab -e
Ajoutez la ligne suivante :
0 1 * * * /usr/sbin/tmpwatch 30d /var/log/
Conformément au travail cron ci-dessus, Tmpwatch s'exécutera tous les jours à 1h du matin et supprimera les fichiers qui ont 30 jours de plus.
Pour plus de détails sur la configuration des tâches cron, consultez le lien suivant.
- Guide du débutant sur les tâches Cron
Encore une fois, veuillez faire attention lorsque vous utilisez les commandes Tmpwatch/Tmpreaper . Vérifiez le chemin avant de l'exécuter pour éviter la perte de données.
Pour plus de détails, consultez les pages de manuel.
$ man tmpwatch
Ou,
$ man tmpreaper
Lire connexe :
- Autotrash :un outil CLI pour purger automatiquement les anciens fichiers supprimés
- Trash-cli :une corbeille en ligne de commande pour les systèmes de type Unix
- Rechercher et supprimer le fichier le plus ancien s'il y a plus de X fichiers dans un répertoire
- Comment rechercher et supprimer des packages inutilisés sous Linux
- Comment nettoyer les fichiers indésirables dans Ubuntu à l'aide d'Ubuntu Cleaner