{"id":522,"date":"2012-08-01T04:24:07","date_gmt":"2012-08-01T02:24:07","guid":{"rendered":"http:\/\/gcolpart.evolix.net\/blog21\/?p=522"},"modified":"2012-08-02T19:12:15","modified_gmt":"2012-08-02T17:12:15","slug":"astuces-pour-gerer-un-repertoire-ext3-bien-rempli","status":"publish","type":"post","link":"https:\/\/gcolpart.evolix.net\/blog21\/astuces-pour-gerer-un-repertoire-ext3-bien-rempli\/","title":{"rendered":"Astuces pour g\u00e9rer un r\u00e9pertoire ext3 bien rempli"},"content":{"rendered":"<p>Disclaimer : Valable pour de l&#8217;ext3 sous Linux (utilisable sur d&#8217;autres filesystems ou Unix \u00e0 vos disques et p\u00e9ril)<\/p>\n<p>Vous avez un r\u00e9pertoire rempli \u00e0 rabord de nombreux fichiers, et il est impossible de conna\u00eetre sa taille, le lister ou l&#8217;effacer sans impact sur la production ?<\/p>\n<p>Voici quelques astuces :<\/p>\n<p>&#8211; Avec un &#8220;ls -ld&#8221; sur le r\u00e9pertoire, vous pouvez estimer grossi\u00e8rement le nombre de fichiers pr\u00e9sents dans un r\u00e9pertoire. En effet, un r\u00e9pertoire vide fait 4 Ko (je simplifie). Et plus il contient de fichiers, plus sa taille va augmenter. Par exemple, un r\u00e9pertoire contenant 2 millions de fichiers pourra faire une taille de 100 Mo (je parle bien de la taille du r\u00e9pertoire et non pas de la taille du contenu). Attention, c&#8217;est variable selon la longueur des noms des fichiers. Et prendre garde aussi que ce n&#8217;est pas dynamique : si vous videz compl\u00e8tement un r\u00e9pertoire bien rempli, il gardera sa taille volumineuse (d&#8217;o\u00f9 l&#8217;int\u00e9r\u00eat de recr\u00e9er un r\u00e9pertoire qui s&#8217;est rempli &#8220;par erreur&#8221;).<\/p>\n<p>&#8211; Pour lister les fichiers du r\u00e9pertoire, utiliser la commande &#8220;ls&#8221; n&#8217;est pas une bonne id\u00e9e car elle acc\u00e8de \u00e0 toute la liste avant de l&#8217;afficher. Voici comment lister 10 fichiers sans attendre :<\/p>\n<pre>\r\nperl -le 'opendir DIR, \".\" or die; $i=0; while ($i&lt;10) { my $f = readdir DIR; print $f; $i++; }; closedir DIR'\r\n<\/pre>\n<p>Gr\u00e2ce \u00e0 leurs noms, vous pouvez d\u00e9sormais examiner (ouvrir, conna\u00eetre sa taille) un \u00e9chantillon de fichiers contenus dans votre fameux r\u00e9pertoire.<\/p>\n<p>Pour lister l&#8217;ensemble des fichiers sans attendre comme &#8220;ls&#8221; :<\/p>\n<pre>\r\nperl -le 'opendir DIR, \".\" or die; print while $_ = readdir DIR; closedir DIR'\r\n<\/pre>\n<p>&#8211; Pour effacer le contenu du r\u00e9pertoire en limitant l&#8217;impact sur la production, oubliez &#8220;rm -rf&#8221; qui va saturer vos I\/O disque mais pr\u00e9f\u00e9rez le faire par blocs de N fichiers avec des pauses de quelques secondes ! Voici une commande &#8220;conviviale&#8221; qui va faire cela par blocs de 300 fichiers avec des pauses de 5 secondes :<\/p>\n<pre>\r\nperl -le 'use POSIX qw\/strftime\/; opendir DIR, \".\" or die; $i=0; printf \"DELETING IN PROGRESS...\";\r\n while (my $f = readdir DIR) {unlink $f;  $i++;\r\n if ($i % 300 == 0) {printf \"...$i files deleted\\n\".strftime(\"%Y-%m-%d %H:%M:%S\",localtime).\" : PAUSE...\";\r\n $| = 1; sleep 5 ; printf \"...DONE. \"; printf \"DELETING IN PROGRESS...\"}}; printf \"...DONE\"; closedir DIR'\r\n<\/pre>\n<p>EDIT : en compl\u00e9ment, on n&#8217;oubliera pas que l&#8217;on peut aussi g\u00e9rer la priorit\u00e9 d&#8217;ordonnancement des I\/O avec la commande ionice<br \/>\n(merci \u00e0 Sylvain B. de l&#8217;avoir soulign\u00e9) <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Disclaimer : Valable pour de l&#8217;ext3 sous Linux (utilisable sur d&#8217;autres filesystems ou Unix \u00e0 vos disques et p\u00e9ril) Vous avez un r\u00e9pertoire rempli \u00e0 rabord de nombreux fichiers, et il est impossible de conna\u00eetre sa taille, le lister ou l&#8217;effacer sans impact sur la production ? Voici quelques astuces : &#8211; Avec un &#8220;ls [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,5,72,69],"tags":[],"class_list":["post-522","post","type-post","status-publish","format-standard","hentry","category-debian-fr","category-evolix","category-french","category-planet-libre"],"_links":{"self":[{"href":"https:\/\/gcolpart.evolix.net\/blog21\/wp-json\/wp\/v2\/posts\/522","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gcolpart.evolix.net\/blog21\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gcolpart.evolix.net\/blog21\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gcolpart.evolix.net\/blog21\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gcolpart.evolix.net\/blog21\/wp-json\/wp\/v2\/comments?post=522"}],"version-history":[{"count":9,"href":"https:\/\/gcolpart.evolix.net\/blog21\/wp-json\/wp\/v2\/posts\/522\/revisions"}],"predecessor-version":[{"id":530,"href":"https:\/\/gcolpart.evolix.net\/blog21\/wp-json\/wp\/v2\/posts\/522\/revisions\/530"}],"wp:attachment":[{"href":"https:\/\/gcolpart.evolix.net\/blog21\/wp-json\/wp\/v2\/media?parent=522"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gcolpart.evolix.net\/blog21\/wp-json\/wp\/v2\/categories?post=522"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gcolpart.evolix.net\/blog21\/wp-json\/wp\/v2\/tags?post=522"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}