Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1729 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [résolu] Commande pour défragmenter

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[résolu] Commande pour défragmenter

n°1420752
tyrex9
Posté le 12-07-2018 à 10:04:53  profilanswer
 

Slt, c'est assez simple, j'ai déjà cherché plein de fois sur google mais je n'ai jamais trouvé
je tombe tout le temps sur des pages me disant que formater sur linux (ext4) ça ne sert à rien, car il fragmente très peu.
 
Le hic c'est que ce n'est pas pour un ext4, dont j'en ai besoin.
 
Mais pour des disques externes en NTFS, et aussi en FAT32.
d'ailleurs encore un hic, ce n'est même pas pour défragmenter vraiment, mais analyser et savoir à combien est la fragmentation.
 
(Ensuite je formate, et recopie les données sur le disque, c'est plus rapide que d'attendre 4 jours pour défragmenter).


Message édité par tyrex9 le 15-07-2018 à 21:15:23

---------------
Droit au but. Exelcium. Je ne perds pas, j'apprends. 1 centrale nucléaire = 3000 éoliennes = 130 km² panneau solaire
mood
Publicité
Posté le 12-07-2018 à 10:04:53  profilanswer
 

n°1420763
Mjules
Modérateur
Parle dans le vide
Posté le 12-07-2018 à 15:46:59  profilanswer
 

pour la défragmentation, je ne suis pas certains qu'il existe un soft fiable sous linux pour ntfs/fat32
 
pour voir la fragmentation, je connais filefrag mais ça semble plus par fichier que pour une partition.


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
n°1420848
tyrex9
Posté le 14-07-2018 à 11:27:53  profilanswer
 

man filefrag
 
pas beaucoup d'infos,
j'ai cherché plus loin:   https://laurdbayrone.wordpress.com/ [...] us-ubuntu/
 

Citation :

Défragmenter sous Linux ? Oui, il peut y avoir une légère fragmentation de vos fichiers sous Linux. Soyons claires, elle est de très loin bien moins importante que sous Windows, sous Linux, la gestion des « clusters » vides a toujours été bien gérée par le noyau.
 
Pour défragmenter votre système de fichier, vous disposez d’un outil (inclus dans toutes les distributions) : e4defrag.
 
On l’utilise en ligne de commande de la manière suivante :
 
Ouvrez le terminal (CTRL+ALT+T) et saisissez la ligne ci-dessous,
 
sudo e4defrag -c /dev/sda* ==> ou le nom d’une partition en particulier, sda1* par exemple.
 
L’utilitaire va alors analyser votre disque, et vous indiquer s’il a besoin d’une défragmentation, si c’est le cas, il vous demandera l’autorisation de la lancer.


 
 
Donc ça fonctionne:
 
e4defrag -c /cheminversmondisquedurexterne/*
 
mais seulement pour des "ext4"
 
et pour "filefrag" que j'ai essayé de comprendre pendant au moins 2h, le "man" n'est pas assez complet, donc je ne comprends vraiment rien.


---------------
Droit au but. Exelcium. Je ne perds pas, j'apprends. 1 centrale nucléaire = 3000 éoliennes = 130 km² panneau solaire
n°1420851
memaster62
just do turbo S and tux
Posté le 14-07-2018 à 13:01:04  profilanswer
 

ah oui je ne m'étais jamais posé la question de defragmenter un filesystem windows depuis linux. :??:  
 
ceci dit je ne comprends pas pourquoi crosoft reste sur ce modèle de partition qu'il est nécessaire de défragmenter. :??:  
si quelqu'un a une réponse (en dehors de dire, c'est d'la mayrde)? :D


---------------
ma conduite intérieure .:R
n°1420856
tyrex9
Posté le 14-07-2018 à 14:03:49  profilanswer
 

Tu dois te tromper, car sur linux ça fragmente de très peu mais cela fragmente.
 
Je connais quelqu'un qui défragmente minimum 1fois par mois son disque, il a très peu d'espace libre (et il parle bien de son système linux).
 
Et c'est à ce moment là que la fragmentation bat des records.
 
 
Et pour ma part je ne défragmente sur linux jamais, un simple formatage de partition et tout repart à 0, ensuite tu remets tes données.
 
Si quelqu'un à la solution pour faire l'analyse d'un système NTFS ou FAT32, je cherche toujours.


---------------
Droit au but. Exelcium. Je ne perds pas, j'apprends. 1 centrale nucléaire = 3000 éoliennes = 130 km² panneau solaire
n°1420860
memaster62
just do turbo S and tux
Posté le 14-07-2018 à 17:41:54  profilanswer
 

cela fait 20ans que j'utilise du linux et je n'ai jamais eu à défragmenter. Je veux dire par là aucune perte de perfomance liée à la fragmentation.
pourquoi défragmenter si cela n'apporte rien? j'ai constaté la même chose chez OSX aussi, jamais entendu parlé de (dé)fragmentation :p  
sur crosoft par contre on voit très bien que si on ne défragmente jamais, le systeme se retrouve comme asphixié avec genre 20% de fragmentation.
après on peut défragmenter pour pouvoir créer une nouvelle partition dans l'espace libre. cela permet d'etre sûr de ne pas perdre de données :D  
ma question est pourquoi reste t'il sur un modele de filesystem qui se fragmente beaucoup alors que d'autres FS font bien mieux en la matière.
ils auraient pu le faire lorsqu'il y a eu le passage de fat32 à NTFS :sarcastic:
 
edit : j'ajouterais qu'on ne constate pas non plus ce genre de souci sur les smartphones...

Message cité 1 fois
Message édité par memaster62 le 14-07-2018 à 17:46:26

---------------
ma conduite intérieure .:R
n°1420861
Trit'
Posté le 14-07-2018 à 19:04:27  profilanswer
 

memaster62 a écrit :

sur crosoft par contre on voit très bien que si on ne défragmente jamais, le systeme se retrouve comme asphixié avec genre 20% de fragmentation.


Ça fait presque 12 ans, depuis la sortie de Windows Vista, que la défragmentation est désormais automatique et se fait en arrière-plan sur Windows… Les vieux clichés datant d’XP doivent mourir avec lui, maintenant (et il est mort en 2014). :o  
 
Pour les smartphones, outre le fait que l’OS doit être bien proprio (c’est APFS sur iPhone, mais je sais pas sur Android : sans doute un truc propre à Google), ça utilise de la mémoire Flash comme les SSD (qu’on ne défragmente pas non plus). Ça ne fonctionne donc pas du tout de la même manière.
 
Quant à NTFS, il fragmente quand même bien moins que FAT32. Déjà que pour les tailles de partition courantes, NTFS n’occupe que des secteurs de 4 kio au lieu de 32 kio en FAT32…

n°1420866
memaster62
just do turbo S and tux
Posté le 14-07-2018 à 21:05:19  profilanswer
 

Trit' a écrit :


Ça fait presque 12 ans, depuis la sortie de Windows Vista, que la défragmentation est désormais automatique et se fait en arrière-plan sur Windows… Les vieux clichés datant d’XP doivent mourir avec lui, maintenant (et il est mort en 2014). :o  
 
Pour les smartphones, outre le fait que l’OS doit être bien proprio (c’est APFS sur iPhone, mais je sais pas sur Android : sans doute un truc propre à Google), ça utilise de la mémoire Flash comme les SSD (qu’on ne défragmente pas non plus). Ça ne fonctionne donc pas du tout de la même manière.
 
Quant à NTFS, il fragmente quand même bien moins que FAT32. Déjà que pour les tailles de partition courantes, NTFS n’occupe que des secteurs de 4 kio au lieu de 32 kio en FAT32…


c'est donc symptomatique s'il faut defragmenter en arrière plan? mais dans la vraie vie j'ai vu des win7 avec 50% de fragmentation et que j'ai du défragmenté "à la main".
c'est pour cela que je me pose cette question. nous sommes en 2018, s'il existe des systemes qu'on a pas besoin de défragmenter pourquoi l'OS qui représente 80% de la part de marché ne passe pas sur un FS digne de ce nom?


---------------
ma conduite intérieure .:R
n°1420867
Mjules
Modérateur
Parle dans le vide
Posté le 14-07-2018 à 21:20:33  profilanswer
 

En dehors de la fragmentation, NTFS est probablement l'un des FS les plus robustes existant si ce n'est le plus robuste.
Je ne suis pas certain que le risque de changer le FS vs le gain sur un problème d'impact de plus en plus limité vaille la peine.


Message édité par Mjules le 14-07-2018 à 21:20:47

---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
n°1420868
zoroastre9​4
Posté le 14-07-2018 à 22:16:59  profilanswer
 

Salut,

Citation :

Si quelqu'un à la solution pour faire l'analyse d'un système NTFS ou FAT32, je cherche toujours.


 
Je ne sais pas si c'est "la solution", mais juste en utilisant filefrag, perso je trouve qu'on avance déjà pas mal. 2 exemples :
 
1 - Une méthode très simple en ligne de commande trouvée dans cet article : https://blog.wsol.com/utilities-for [...] n-in-linux. Cette démarche a ma préférence, par sa simplicité.
Je me contente de transposer des explications & commandes données dans 1 paragraphe de l'article. L'auteur cherche (logiquement je crois) en priorité la fragmentation dans les fichiers volumineux. D'où une 1ère commande pour trier, ici, les 20 fichiers les plus volumineux dans un répertoire ou une partition donnée. En transposant à un disque externe en NTFS ou FAT32 depuis ma Calculate, ça donne :

Code :
  1. # find /run/media/user/Disk_Externe/ -type f -exec du -Sh {} + | sort -rh | head -n 20


Puis choisir un (ou plusieurs) "gros" fichier(s) dans le tas la liste affichée suite à la 1ère commande, et taper une 2nde commande type :

Code :
  1. # filefrag /path/to/some/largefile


soit par exemple :

Code :
  1. # filefrag /run/media/user/Disk_Externe/wsusoffline_w7pro,MSO_isos/iso/wsusoffline-ofc-fra.iso


Et ensuite évaluer si l'état de fragmentation justifie une défrag ou non.
 
2 - Plus "élaboré", un script perl basé sur filefrag. Trouvé ici : https://forums.gentoo.org/viewtopic-p-3081971.html. La version la plus intéressante (je crois) du script ne se trouve pas au début mais au post #18. Script proposé en 2006. Je viens de le tester tel quel sur ma Calculate. Toujours fonctionnel en 2018. (Un contributeur propose 2 autres variantes dudit script page 2 du topic, mais je ne les ai pas testées.)

Citation :

#!/usr/bin/perl -w
 
#this script search for frag on a fs
use strict;
 
#number of files
my $files = 0;
#number of fragment
my $fragments = 0;
#number of fragmented files
my $fragfiles = 0;
 
#search fs for all file
open (FILES, "find " . $ARGV[0] . " -xdev -type f -print0 |" );
 
$/ = "\0";
 
while (defined (my $file = <FILES> )) {
        open (FRAG, "-|", "filefrag", $file);
        my $res = <FRAG>;
        if ($res =~ m/.*:\s+(\d+) extents? found/) {
                my $fragment = $1;
                $fragments += $fragment;
                if ($fragment > 1) {
                        $fragfiles++;
                }
                $files++;
        } else {
                print ("$res : not understand for $file.\n" );
        }
        close (FRAG);
}
close (FILES);
 
print ( $fragfiles / $files * 100 . "% non contiguous files, " . $fragments / $files . " average fragments.\n" );


 
J'ai lancé le script sur un disque externe en NTFS. Et aussi sur une clé USB en FAT32. C'était OK dans tous les cas.
Exemple avec ladite clé USB depuis un script bêtement collé dans /home (j'ai nommé mon script "fsfragck" ) :

Code :
  1. # /home/fsfragck.pl /run/media/user/CLEF32/


Donne :

Code :
  1. 0.735578784359272% non contiguous files, 0.950058072009291 average fragments.


 
On constate que filefrag a besoin que l'on lui désigne ses cibles à partir de points de montage.
 
Ci dessus ce ne sont "que" 2 exemples. On peut imaginer des variantes, des démarches dans la même direction. Basées sur filefrag.


Message édité par zoroastre94 le 14-07-2018 à 22:29:23

---------------
"Avec un escalier prévu pour la montée, on réussit souvent à monter plus bas qu'on ne serait descendu avec un escalier prévu pour la descente" (devise Shadok)
mood
Publicité
Posté le 14-07-2018 à 22:16:59  profilanswer
 

n°1420894
tyrex9
Posté le 15-07-2018 à 21:13:37  profilanswer
 

Bonsoir, oui ça marche comme expliquer dans ton message.
 
 
La 1er partie pour moi c'est un peu la jungle, avoir la fragmentation sur 1 fichier ne donne pas une moyenne sur un disque
j'ai essayé rien de concret.
 
Mais la 2e partie est bien mieux.
 
Copier le script avec un nom comme   fsfragck.pl   (le rendre exécutable)
et ensuite le lancer avec la commande en root.
 
Je l'ai fait également sur une clé en fat32, ça fonctionne rapidement
sur un disque ntfs, par contre j'ai eu un problème avec un espace sur le nom du disque dur.
 
Je l'ai relancé en y ajoutant des apostrophes, mais j'ai arrêté le truc j'avais attendu au moins 2h un résultat
mais rien (un gros disque plein de données).
 
En ce qui me concerne le NTFS je recommencerais je verrais bien.
Pour le fat32 sur un autre gros disque je recommencerais.


---------------
Droit au but. Exelcium. Je ne perds pas, j'apprends. 1 centrale nucléaire = 3000 éoliennes = 130 km² panneau solaire
n°1420999
zoroastre9​4
Posté le 19-07-2018 à 16:57:57  profilanswer
 

Salut,

 
Citation :

sur un disque ntfs (...) j'ai arrêté le truc j'avais attendu au moins 2h un résultat mais rien (un gros disque plein de données).

 

J'ai refait un test encore plus concluant. Avec une autre version modifiée (améliorée ?) du même script de base. Cette version, on la trouve dans le même topic du forum Gentoo (https://forums.gentoo.org/viewtopic [...] rt-25.html), tout en bas de la page 2. C'est la dernière version en date proposée de ce script. Le post qui la contient, signé "user11", date de 2008.
NB : je ne tiens pas compte de la micro-polémique en fin de topic à propos de la commande "xargs". Je constate simplement que la nouvelle version du script (avec "xargs -0" ;) ) est fonctionnelle, et plutôt rapide pour le coup.

 

"Nouvelle" version (2008) du script :

Citation :

#!/usr/bin/perl -w

 

#this script searches & parses fragmented files in order to determine amount of fragmentation on a hdd
use strict;

 

#number of files
my $files = 0;
#number of fragment
my $fragments = 0;
#number of fragmented files
my $fragfiles = 0;

 

my $verbose;

 

if ($ARGV[0] eq '-v') { shift @ARGV; $verbose++; }

 

open (REPORT, "find " . $ARGV[0] . " -xdev -type f -print0 | xargs -0 filefrag |" );

 

while (defined (my $res = <REPORT> )) {
        if ($res =~ m/.*:\s+(\d+) extents? found$/) {
                my $fragment = $1;
                $fragments += $fragment;
                if ($fragment > 1) {
                        $fragfiles++;
                }
                $files++;
        } else {
                print ("Failed to parse: $res\n" );
        }
}
close (REPORT);

 

if ($verbose) {
   print "Total files:      $files\n";
   print "Fragmented files: $fragfiles\n";
   print "Fragments:        $fragments\n";
}

 

sub round($$) {
   my $v = shift; # value
   my $p = shift; # rouding divisor (1 for '123', 10 for '123.4', 100 for '123.45')
   return int($v * $p) / $p;
}
print ( round($fragfiles / $files * 100, 10) . "% non contiguous files, " . round($fragments / $files, 10) . " average fragments.\n" );

 

Essai effectué chez moi sur un HDD externe 2,5" en USB 3.0. Volume : 750 Go. Disk aux 3/4 plein. Filesytem : NTFS.
J'ai nommé le script "fsfragck-v2.pl".
Commande d'exécution :

Code :
  1. # /home/fsfragck-v2.pl -v /run/media/guest/EHD_WD_750Go/


NB : comme précisé dans le topic, ajouter l'option verbeuse "-v" donne quelques détails intéressants en plus dans le résultat de l'analyse. J'y ai donc eu recours.

 

Résultat dans mon cas :

Citation :

Total files:      16948
Fragmented files: 10
Fragments:        13069
0% non contiguous files, 0.7 average fragments.


- Noter que le "0% non contiguous files" ne signifie pas qu'aucune fragmentation n'est décelée. Cette valeur vient du fait que le script nouvelle version arrondit les résultats (je cite : "rounds values to reasonable precision." ).
- Noter aussi que des scans du même disk externe WD 2,5" 750 Go effectués depuis Windows 10, avec 2 utilitaires de défrag bien mieux armés pour travailler sur du NTFS (Defraggler, etc.), donnent exactement les mêmes résultats que le script ci-dessus lancé depuis ma distrib Linux. A savoir : même nombre de fichiers + même nombre de fichiers fragmentés + même nombre de fragments.

 

Enfin, on constate que même avec les ~ 17000 fichiers présents sur ce disque externe mécanique (un WD Black de 2012), l'analyse n'a pas duré plus de 20mn. Sans doute moins. J'ai lancé le script puis je suis parti. De retour +/- 20mn après, le job était terminé.


Message édité par zoroastre94 le 22-07-2018 à 12:31:29

---------------
"Avec un escalier prévu pour la montée, on réussit souvent à monter plus bas qu'on ne serait descendu avec un escalier prévu pour la descente" (devise Shadok)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [résolu] Commande pour défragmenter

 

Sujets relatifs
script montage lecteur réseau apres commande kinit[résolu] MPD plante à chaque commande MPC
créer une commande trashPrécision sur commande chmod
Commande ls : résultats différents entre debian et centosLigne de commande et processID
Utiliser la commande Mount sans saisir le mot de passeclient mumble en ligne de commande
sed : question sur la commande 'N'Linux commande pour savoir les services qui sont installés ?
Plus de sujets relatifs à : [résolu] Commande pour défragmenter


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR