GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment créer une tâche Cron qui supprime automatiquement les fichiers datant de plus de 30 jours ?

J'utilise le bureau Ubuntu 14. J'utilise cette machine pour sauvegarder d'autres machines et comme serveur FTP pour les caméras de sécurité.

Je dois créer une tâche cron qui supprime automatiquement les fichiers de plus de 30 jours. J'ai fait quelques recherches et je pense avoir trouvé la bonne commande, mais je veux m'assurer qu'il ne me manque rien avant de l'exécuter.

* 4 * * * find /home/USER/DIRECTORY1/DIRECTORY2/ -mindepth 1 -type f -mtime 29 -delete

Dois-je mettre "sudo" avant la commande find ?

Dois-je mettre "+" avant le nombre de jours "29" ?

Réponse acceptée :

Tout d'abord, mettez votre find ... commande dans un bash script, et appelez ce script depuis votre crontab . Si vous avez un répertoire personnel chiffré (cat /home/.ecryptfs/$USER/.ecryptfs/Private.mnt ) vous devrez stocker votre script en dehors de votre $HOME arborescence de répertoires. Garder une commande dans crontab rend la configuration, la journalisation et le débogage plus difficiles, et le crontab l'analyseur de commande n'est pas aussi intelligent que bash ‘s.

Deuxièmement, toujours, Toujours, TOUJOURS tester find avec -print , et faites-le fonctionner, avant d'envisager -delete .

Troisièmement, le find tester "-mtime 29 ” dit find "Trouvez le mtime du fichier , et renvoie True s'il est égal à 29 . Vous devez utiliser -mtime +29 , qui find voit comme "more than 29 ", c'est ce que vous voulez. De man find :

   Numeric arguments can be specified as

   +n     for greater than n,

   -n     for less than n,

   n      for exactly n.

Quatrièmement, assurez-vous que vous disposez d'un accès en écriture aux répertoires dans /home/USER/DIRECTORY1/DIRECTORY2/ .

Cinquièmement, voulez-vous dire /home/USER/DIRECTORY1/DIRECTORY2/ ou /home/$USER/DIRECTORY1/DIRECTORY2/ ? Si $USER est pour l'ID utilisateur de l'utilisateur, vous avez un problème :cron ne définit pas $USER dans l'environnement d'exécution. Il définit $HOME , vous pouvez donc utiliser $HOME/DIRECTORY1/DIRECTORY2 .


Ubuntu
  1. Comment configurer un cron pour effectuer quotidiennement la sauvegarde de la base de données MySQL et supprimer les anciens fichiers de sauvegarde datant de plus de 10 jours ?

  2. Comment supprimer des fichiers de plus de N jours à l'aide de tmpreaper sous Linux

  3. Comment supprimer les fichiers de plus de n jours SANS utiliser la commande find

  4. Comment rechercher et supprimer des fichiers antérieurs à une période donnée sous Linux

  5. Comment créer un fichier tar pour des fichiers de plus de 7 jours à l'aide de scripts shell Linux

Comment utiliser la commande SED pour rechercher et remplacer une chaîne dans des fichiers

Comment trouver des fichiers sur la ligne de commande Ubuntu

Comment rechercher et supprimer des fichiers en double dans Ubuntu à l'aide de Fdupes

Comment supprimer des fichiers plus anciens que les jours spécifiés sous Linux

Supprimer tous les fichiers et dossiers dans /tmp plus anciens qu'un jour ?

Créer et supprimer une tâche Cron