1 votes

Comment supprimer un dossier incroyablement grand sous Linux ?

Nous avons un dossier de cache, qui accidentellement devient assez grand pour casser le serveur. Nous disposons de 8 Go de RAM sur le serveur, et lorsque j'exécute le programme simple rm pour supprimer tous les fichiers qu'il contient consomme toute la RAM et ne le supprime toujours pas après 5 heures.

Donc, nous essayons d'utiliser find mais il échoue aussi après 12 heures de fonctionnement. Maintenant, depuis les dernières 24 heures, un find con perl est exécutée, et le dossier n'est toujours pas supprimé ; en fait, pas un seul fichier n'est supprimé.

Quand nous ls le dossier parent, il montre la taille du dossier autour de 1GB Je me demande juste combien de millions de fichiers il y a.

Donc, ma question est la suivante : existe-t-il un moyen de supprimer des fichiers sans les énumérer, de sorte que le système supprime simplement le dossier ou les fichiers sans en faire la liste (c'est-à-dire sans les appeler) ? getdir() comme les appels système)

J'envisage vraiment de formater le serveur pour m'en débarrasser maintenant.

EDITAR:

J'ai utilisé find con -delete et avec -exec rm -f {}

EDIT2 :

Sur la base de cet article Nous exécutons la commande perl en ce moment (cela fait environ 24 heures que la commande est toujours en cours d'exécution), mais rien n'a été fait en ce qui concerne la taille du dossier visible pour nous.

3voto

Jonno Points 20324

Une option serait d'utiliser l'option -delete de find . Je sais que tu as dit que tu as déjà utilisé find mais vous n'avez pas dit exactement comment vous l'avez utilisé. Normalement, il essaie d'énumérer tous les fichiers, mais je crois qu'en utilisant la commande suivante, il devrait supprimer les choses au fur et à mesure qu'il les trouve :

find . -type f -print -delete (Vous pouvez retirer -print si vous ne voulez pas de sortie, et bien sûr cd à votre dossier ou entrez le nom correct du dossier)

Ça vaut le coup d'essayer au moins.

Edit-- voici une suggestion d'une autre question sur @ unix

mkdir empty_dir
rsync -a --delete empty_dir/    yourdirectory/

1voto

Senthil Points 479

Après avoir essayé plusieurs suggestions, celle qui a fonctionné pour moi a été de sauvegarder les fichiers dont j'avais besoin, de formater le support et de les restaurer. Bien sûr, cela dépend de la taille des fichiers que vous voulez sauvegarder. Cependant, on peut supposer que vous faites des sauvegardes de vos systèmes de fichiers de toute façon - dans ce cas, vous pouvez simplement formater et restaurer.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X