[CRON] Deplacer des fichiers a heure fixe

Résolu
_vince Messages postés 37 Date d'inscription   Statut Membre Dernière intervention   -  
_vince Messages postés 37 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je cherche a deplacer des fichiers *.log vieux de 2 jours vers un sous-repertoire oldlogs.
Et aussi, j'efface les fichiers vieux fichiers de plus de 15 jours.
Dans l'exemple, j'execute toutes les minutes.

Dans le fichier cron, je pensais executer la commande:
* * * * * find /path-to/ -type f -name '*.log' -mtime +2 -exec mv {} /path-to/old-logs/ \;
* * * * * find /path-to/old-logs/ -type f -name '*.log' -mtime +15 | xargs rm

Resultat des courses:
- une commande du genre: "find /path-to/old-logs/ -type f -name '*.log'| xargs rm" efface bien les fichiers cibles.
- une commande du genre: "find /path-to/ -type f -name '*.log' -exec mv {} /path-to/old-logs/ \;" ne fonctionne pas dans le crontab. Evidemment, elle fonctionne en dehors du crontab.

D'apres ce que je peux lire sur le forum, l'environnement du cron est pauvre. Et il faudrait enrober ces commandes dans un script? Mais je trouve ca un peu dommage de devoir inclure des commandes aussi basiques dans un script.

Tous les conseils sont les bienvenus. Merci d'avance
A voir également:

4 réponses

poumiZ Messages postés 102 Date d'inscription   Statut Membre Dernière intervention   10
 
j'ai essayé ta commande en cron sous Suse 10: ça marche ...
1
poumiZ Messages postés 102 Date d'inscription   Statut Membre Dernière intervention   10
 
j'ai le même problème sous AIX(find: 0652-018 An expression term lacks a required parameter). Il suffit de protéger le "\" de fin:
* * * * * find /path-to/ -type f -name '*.log' -mtime +2 -exec mv {} /path-to/old-logs/ \\; 
1
_vince Messages postés 37 Date d'inscription   Statut Membre Dernière intervention  
 
.
0
_vince Messages postés 37 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai oublie de dire que j'etais sous AIX.

J'ai essaye et effectivement ca marche :-)

Merci beaucoup pour cette "astuce".
0
poumiZ Messages postés 102 Date d'inscription   Statut Membre Dernière intervention   10
 
Et en faisant:
* * * * * su -c "find /path-to/ -type f -name '*.log' -mtime +2 -exec mv {} /path-to/old-logs/ \;" 
?
0
_vince Messages postés 37 Date d'inscription   Statut Membre Dernière intervention  
 
J'utilise le crontab de l' utilisateur qui ecrit ces fichiers de logs mais pas de root. D'ailleurs, j'ai essaye le su -c mais je ne peux pas etre root.
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
C'est surement les caractères {} ou \; qui posent problèmes au cron
0
_vince Messages postés 37 Date d'inscription   Statut Membre Dernière intervention  
 
Je le pense aussi... mais pourquoi !?!?!

Pour etre precis, le cron m'envoie un mail en me disant ceci:
"find: incomplete statement"

Je ne vois pas en quoi le statement est incomplete vu que la commande fonctionne en dehors du crontab...

J'ai mis mes commandes dans un script en attendant...
0