Script

Bonjour,
Je suis pas trop fort en linux,et je rencontre quelques difficultés: j’aimerai écrire un script de « nettoyage » des logs (archivage et suppression) dans /var/log/samba/, le script sera exécuté chaque 15 du mois.SVP pouvez vous me faire une proposition de script.
Merci à vous.

Regarde du coté de “logrotate” qui est installé par défaut sur la plupart des distribution Linux et qui s’occupe précisément de cela. Ça t’éviteras de réinventer la roue :016

Merci pour ta réponse, j avais regardé le fichier /etc/logrotate.conf mais j’ai pas compris grand chose.j avais juste écris ce script:
/1 * * * 1-5 root tar cvfz /home/babani/recuplog/archive_date.tar.gz /var/log/samba
ce code dans /etc/crontab mais je suis pas satisfait.Dans /var/log/samba,j ai un taille de 3G quand sa atteint plus de 2G, le serveur beug.donc j aimerais un script qui va me permette de supprimer et d’archiver le /var/log/samba. voila un peu mon probleme
Merci bcp!!

Pour supprimer, tu peux toujours redir une chaine nul vers le fichier, une simple redir va écraser le contenu du fichier.
Du coup, si tu fais “echo “” > pathDuFichier”, tu va te retrouver avec un fichier ne contenant plus qu’un saut de ligne.

Ce qui n’est pas propre car tu utilises une chaîne de caractère pour effacer du binaire, ce qui est potentiellement susceptible d’une façon ou d’une autre d’être soumis à l’interprétation du système et de ne pas faire exactement ce que tu souhaites d’un système à l’autre.
Et d’ailleurs c’est bien ce qui se passe : ton fichier ne contient plus qu’un saut de ligne… mais il n’est pas vide binairement parlant.

Voici une autre façon de faire un peu plus carrée :

Explications du code : on prend un fichier totalement vide ("/dev/null") et on le copie intégralement sur le fichier à écraser ("/chemin/du/fichier/à/vider").
“dd” copie octet par octet, c’est sa raison d’être et c’est donc précisément cet outil (ou équivalent) qui devrait être utilisé pour ce genre d’opérations. Comme ça pas de surprise.

Attention à ne pas confondre “/dev/null” avec “/dev/zero” qui lui contient un caractère “0x00” (= code ASCII “NUL”). “/dev/null” ne contient absolument rien, “/dev/zero” contient un caractère zéro (appelé donc “caractère nul”, ce qui peut porter à confusion). Ainsi, si l’on veut vider totalement un fichier, il faut utiliser “/dev/null”, et si l’on veut garder la taille d’origine du fichier mais remplacer tous ses caractères par des caractères nuls, il faut utiliser “/dev/zero”.

Quelques explications supplémentaires :

fr.wikipedia.org/wiki//dev/null
fr.wikipedia.org/wiki//dev/zero

Merci infiniment pour vos réponses, dans mes recherches j ai appris que c est pas bien de créer les script directement dans /etc/crontab mais de le créer ailleurs et de faire appel au script, pouvez vous m’indiqué comment le faire. les fichiers à supprimés et archivés sont daté dans: /var/log/samba , j aimerai supprimé et archivé les fichiers de façon décroissantes en fonction des date;SVP proposé moi des scripte.
Merci Infiniment