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
.