Bonjour,
Mon serveur mail utilise qmail et je viens de m'apercevoir que le disque était plein !
J'ai commencé par faire un peu de ménage dans certaines boîtes mails mais en fait le problème viens de la boîte mail root/admin qui reçoit tous les mailer-daemon & co.
J'ai voulu vider le répertoire new de son Maildir avec un rm -f *, mais le nombre de mails stockés dans le répertoire semble trop important (+ de 2 Go de mails) :
> Soit j'obtiens le message "Argument list too long"
> Soit ma session se coupe toute seule et je dois me reconnecter
Quelqu'un aurait une idée ?
Merci
# screen et xargs
Posté par Guillaume Smet (site web personnel) . Évalué à 4.
1. Toujours faire ce genre d'opération dans un screen : si tu es déconnecté, tu te reconnectes et tu fais un screen -d -r pour récupérer ton screen
2. xargs est ton ami : ls | xargs rm -f
(à faire dans le bon répertoire, évidemment)
Le problème avec ta méthode est que bash récupère la liste de tous les fichiers en développant le * puis qu'il essaie de passer la liste directement en argument de rm.
--
Guillaume
[^] # Re: screen et xargs
Posté par totof2000 . Évalué à 6.
Attention de bien indiquer le bon répertoire
[^] # Re: screen et xargs
Posté par Fabimaru (site web personnel) . Évalué à 2.
xargs -i rm -f ./{}
ou
xargs -0 rm -f
mais on se retrouve à nouveau avec le problème de la ligne de commande trop longue. Alors, comment avoir un nombre limité d'arguments par commande (histoire d'éviter de multiplier les processus "rm"). Et bien, je ne sais pas, et je suis preneur pour la solution!
[^] # Re: screen et xargs
Posté par nullisimo . Évalué à 2.
[^] # Re: screen et xargs
Posté par Fabimaru (site web personnel) . Évalué à 2.
# find
Posté par Xarli (site web personnel) . Évalué à 5.
find /var/qmail/mails/root/ -print | xargs /bin/rm
/var/qmail/mails/root/ est bien sûr à remplacer par ton répertoire à traiter.
Avec les paramètres de find, tu peux aussi n'effectuer l'action que sur les fichiers vieux de plus de N jours (ou minutes sur certaines versions de find).
[^] # Re: find
Posté par Jacques L'helgoualc'h (site web personnel) . Évalué à 3.
fichiers vicieux (qui ne doivent pas se poser ici) --- voir les options
-print0 de find et -0 de xargs.
find /var/qmail/mails/root -type f -exec rm -f {} +
Sans l'option -type f, il faut peut-être reconstituer les trois
sous-répertoires cur, new et tmp et vérifier leurs permissions.
La remarque sur l'ancienneté est judicieuse, il serait bon de lire
quelques messages récents avant de tout nettoyer ;).
# Ok ça marche
Posté par LoBi0 . Évalué à 2.
ls | xargs rm -f
Pendant 20 minutes, mon espace disque utilisé a eu tendance à augmenter (probablement dû à un fichier de calcul temporaire), puis là depuis 10minutes, l'espace disque utilisé diminue tout doucement, donc la suppression fonctionne.
A ce rythme, la suppression devrait se terminer dans une petite heure.
Merci
[^] # Re: Ok ça marche
Posté par LoBi0 . Évalué à 2.
Bonnes fêtes de fin d'année à tous !
[^] # Re: Ok ça marche
Posté par -=[ silmaril ]=- (site web personnel) . Évalué à 5.
suivi d'un mkdir
[^] # Re: Ok ça marche
Posté par benoar . Évalué à 3.
[^] # Re: Ok ça marche
Posté par thargos . Évalué à 2.
[0]~/temp/temp$ ls
tata toto #toto# toto~
[0]~/temp/temp$ rm -rf .
rm: ne peut enlever « . » or « .. »
[1]~/temp/temp$ ls
tata toto #toto# toto~
[0]~/temp/temp$
[^] # Re: Ok ça marche
Posté par benoar . Évalué à 2.
[^] # Re: Ok ça marche
Posté par benoar . Évalué à 2.
[^] # Re: Ok ça marche
Posté par -=[ silmaril ]=- (site web personnel) . Évalué à 2.
$ mkdir /tmp/toto
$ cd /tmp/toto
$ rm -rf /tmp/toto
$ ls
$ ls /tmp
$ ls /tmp/toto
le dossier est supprimé, mais, de la même façon que supprimer un
fichier de log apache sans le redémarrer, l'inode n'est pas entièrement
détruit tant qu'il existe une référence ouverte.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.