Gracias Gracias:  0
Me Gusta Me Gusta:  0
No me Gusta No me Gusta:  0
Mostrando resultados del 1 al 6 de 6

Tema: Script para desfragmentar el disco duro

  1. #1
    Fecha de Ingreso
    26-julio-2005
    Ubicación
    Atlántida
    Mensajes
    941
    Post Thanks / Like
    Poder de Credibilidad
    14

    Script para desfragmentar el disco duro

    Ya se que el foro no es un blog, pero me han parecido de utilidad, si incumplo pues a la hoguera!!

    Navegando por la red me he encontrado con estos dos scripts para desfragmentar los disco duros en Linux y la curiosidad me picó, los baje y los ejecuté.

    fragmentacion.pl

    #!/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");
    desfragmentacion.pl

    #!/bin/bash
    # defrag v0.08 by Con Kolivas <kernel@kolivas.org
    # Braindead fs-agnostic defrag to rewrite files in order largest to smallest
    # Run this in the directory you want all the files and subdirectories to be
    # reordered. It will only affect one partition. It works best when run twice.
    # Are you really crazy enough to be using this? It might blow your data
    # into tiny little useless chunks.


    trap 'abort' 1 2 15

    renice 19 $$ > /dev/null

    abort()
    {
    echo -e "\nAborting"
    rm -f tmpfile dirlist
    exit 1
    }

    fail()
    {
    echo -e "\nFailed"
    abort
    }

    declare -i filesize=0
    declare -i numfiles=0

    #The maximum size of a file we can easily cache in ram
    declare -i maxsize=$((`awk '/MemTotal/ {print $2}' /proc/meminfo`*1024))
    (( maxsize-= `awk '/Mapped/ {print $2}' /proc/meminfo` ))
    (( maxsize/= 2))

    if [[ -a tmpfile || -a dirlist ]] ; then
    echo dirlist or tmpfile exists
    exit 1
    fi

    # Sort in the following order:
    # 1) Depth of directory
    # 2) Size of directory descending
    # 3) Filesize descending
    # I made this crap up. It's completely unvalidated.

    echo "Creating list of files..."

    #stupid script to find max directory depth
    find -xdev -type d -printf "%d\n" | sort -n | uniq > dirlist

    #sort directories in descending size order
    cat dirlist | while read d;
    do
    find -xdev -type d -mindepth $d -maxdepth $d -printf "\"%p\"\n" | \
    xargs du -bS --max-depth=0 | \
    sort -k 1,1nr -k 2 |\
    cut -f2 >> tmpfile
    if (( $? )) ; then
    fail
    fi

    done

    rm -f dirlist

    #sort files in descending size order
    cat tmpfile | while read d;
    do
    find "$d" -xdev -type f -maxdepth 1 -printf "%s\t%p\n" | \
    sort -k 1,1nr | \
    cut -f2 >> dirlist
    if (( $? )) ; then
    fail
    fi
    done

    rm -f tmpfile

    numfiles=`wc -l dirlist | awk '{print $1}'`

    echo -e "$numfiles files will be reordered\n"

    #copy to temp file, check the file hasn't changed and then overwrite original
    cat dirlist | while read i;
    do
    (( --numfiles ))
    if [[ ! -f $i ]]; then
    continue
    fi

    #We could be this paranoid but it would slow it down 1000 times
    #if [[ `lsof -f -- "$i"` ]]; then
    # echo -e "\n File $i open! Skipping"
    # continue
    #fi

    filesize=`find "$i" -printf "%s"`
    # read the file first to cache it in ram if possible
    if (( filesize < maxsize ))
    then
    echo -e "\r $numfiles files left \c"
    cat "$i" > /dev/null
    else
    echo -e "\r $numfiles files left - Reordering large file sized $filesize ... \c"
    fi

    datestamp=`find "$i" -printf "%s"`
    cp -a -f "$i" tmpfile
    if (( $? )) ; then
    fail
    fi
    # check the file hasn't been altered since we copied it
    if [[ `find "$i" -printf "%s"` != $datestamp ]] ; then
    continue
    fi

    mv -f tmpfile "$i"
    if (( $? )) ; then
    fail
    fi
    done

    echo -e "\nSucceeded"

    rm -f dirlist
    cuando los bajemos hay que darles permisos:

    chmod u+x fragmentacion.pl
    chmod u+x desfragmentacion.pl

    se ejecutan con:

    sudo ./fragmentacion.pl /home
    sudo ./desfragmentacion.pl /home

    Dejo mis resultados:

    ./fragmentation.pl /home/
    0.900713642347398% non contiguous files, 1.03784729439479 average fragments.
    ./desfragmentacion.pl /home/
    Creating list of files...
    5 files will be reordered

    0 files left
    Succeeded
    La verdad es que nunca se me hubiera ocurrido pensar en una "desfragmentación" de los disco en Linux, pero al menos ahora se que es posible, aunque no sea necesaria.
    Última edición por soyasi; 21-may-2013 a las 21:35
    --
    hkp://subkeys.pgp.net
    GNU/Linux Opensuse leap 15.0 x86_64
    Linux Registered User #391410



    (http://linuxcounter.net/)

  2. #2
    Fecha de Ingreso
    07-febrero-2007
    Ubicación
    Ourense
    Mensajes
    8.559
    Post Thanks / Like
    Poder de Credibilidad
    21

  3. #3
    Fecha de Ingreso
    19-marzo-2005
    Ubicación
    En un lugar del planeta Tierra
    Mensajes
    17.291
    Post Thanks / Like
    Poder de Credibilidad
    10
    Cita Iniciado por soyasi Ver Mensaje
    Ya se que el foro no es un blog, pero me han parecido de utilidad, si incumplo pues a la hoguera!!
    Pues te debería echarte a la hoguera por no citar la fuente donde has copiado esos scripts, copion.
    NORMAS A CUMPLIR EN LOS FOROS (Lectura obligatoria) Lo siento, no contesto privados sobre problemas con GNU/Linux.
    Síguenos en TWITTER y en FACEBOOK
    Código:
    Buscador de   Alojamiento      Alojamiento     Otros
     paquetes:    de imágenes:     de ficheros:    buscadores:
    Search        TinyPic          Ifile Wuala     Simple y Facil
    Webpinstant   Paste Suse       SendSpace       TextSnip  Cl1p

  4. #4
    Fecha de Ingreso
    13-marzo-2007
    Ubicación
    A 8 minutos del Sol
    Mensajes
    211
    Post Thanks / Like
    Poder de Credibilidad
    13
    Me has pillado desprevenido! Pensaba que eso era cosa de NTFS o FAT... Gracias por compartir!
    Saludos!

    - "Dios no juega a los dados."
    - A.Einstein.
    - “Señor Einstein, deje de decirle a Dios lo que debe hacer... usted no está pensando, sólo está siendo lógico
    - Bohr.

  5. #5
    Fecha de Ingreso
    23-marzo-2006
    Ubicación
    Sector Horchata
    Mensajes
    1.721
    Post Thanks / Like
    Poder de Credibilidad
    15
    hola,
    yo siempre he oido que en linux no se produce desfragmentacion por como esta diseñado el sistema de ficheros, aunque algo de debe producir se supone minima.

    Salu2

  6. #6
    Fecha de Ingreso
    07-febrero-2007
    Ubicación
    Ourense
    Mensajes
    8.559
    Post Thanks / Like
    Poder de Credibilidad
    21
    Cita Iniciado por xisco Ver Mensaje
    hola,
    yo siempre he oido que en linux no se produce desfragmentacion por como esta diseñado el sistema de ficheros, aunque algo de debe producir se supone minima.

    Salu2
    Bien, en primer lugar no es lo mismo reiserfs que ext4 que xfs... en segundo lugar, la fragmentación siempre ha de existir (imagínate que tienes un archivo de un "giga" y borras parte de él ) y en tercer lugar que la fragmentación, si existe, impacta de forma distinta en unos y otros sistemas.

    Así que si estás en el improbable caso de tener un sistema de ficheros muy fragmentado, pues ya sabes, defragméntalo; y a diferencia de otros, lo cierto es que la mayoría de usuarios de GNU/Linux bien puedan pasarse años sin que les afecte demasiado. Y es que, como he dicho antes, hay herramientas para esto en la propia distribución.

    Salud!!

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Temas Similares

  1. Montaje de sistemas de archivos con /etc/fstab
    By tranzorx in forum FAQs, Manuales y Tutoriales
    Respuestas: 1
    Último mensaje: 17-abr-2013, 14:38
  2. Estado actual de Gnu/Linux en el Desktop
    By gery in forum General OpenSUSE
    Respuestas: 11
    Último mensaje: 29-nov-2011, 11:01
  3. Respuestas: 28
    Último mensaje: 01-oct-2010, 02:40
  4. Wiimote para Suse 10.2
    By Serfaksan in forum General OpenSUSE
    Respuestas: 0
    Último mensaje: 22-may-2007, 02:16
  5. Acelerando los discos duros en GNU/Linux
    By DiabloRojo in forum FAQs, Manuales y Tutoriales
    Respuestas: 0
    Último mensaje: 31-oct-2006, 21:42

Tags for this Thread

Marcadores

Normas de Publicación

  • No puedes crear nuevos temas
  • No puedes responder mensajes
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •