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 .