Registrarse
Home
Foros
Miembros
Calendario
Normas
Ayuda

Foros de usuarios de openSUSE
Retroceder   ForoSUSE > Zona Técnica > Programación y Scripts > Scripts


Síguenos en Twitter Suscríbete a nuestras noticias Acompáñanos en Facebook

Respuesta
 
Herramientas Desplegado

Script para desfragmentar el disco duro
  #1  
Antiguo 21-may-2013, 03:00
Avatar de soyasi
soyasi soyasi está desconectado
Miembro Senior
 
Fecha de Ingreso: 26-julio-2005
Ubicación: Atlántida
Versión: leap 42.1
Mensajes: 851
Agradecimientos: 187
Agradecido 323 Veces en 221 Mensajes
Poder de Credibilidad: 13
soyasi está en el buen camino
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

Cita:
#!/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

Cita:
#!/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:

Cita:
./fragmentation.pl /home/
0.900713642347398% non contiguous files, 1.03784729439479 average fragments.
Cita:
./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.
__________________
--
hkp://subkeys.pgp.net
GNU/Linux Opensuse leap 42.1 x86_64
Linux Registered User #391410



(http://linuxcounter.net/)

Última edición por soyasi; 21-may-2013 a las 21:35
Responder Citando
  #2  
Antiguo 21-may-2013, 04:45
Avatar de karlggest
karlggest karlggest está desconectado
Moderador
 
Fecha de Ingreso: 07-febrero-2007
Ubicación: Ourense
Versión: Leap 42.3
Mensajes: 8.175
Agradecimientos: 40
Agradecido 1.238 Veces en 910 Mensajes
Poder de Credibilidad: 19
karlggest está en el buen camino
Código:
man e4defrag
man xfs_fsr
Salud!!
__________________
http://sementedotempo.blogspot.com/

-Si lo creen unos pocos, es un delirio; si son muchos los creyentes, es una religión
Responder Citando
El Siguiente Usuario Ha Dado las Gracias a karlggest Por Este Mensaje:
juan_oxa (14-may-2015)
  #3  
Antiguo 21-may-2013, 21:23
Avatar de DiabloRojo
DiabloRojo DiabloRojo está desconectado
Super Moderador
 
Fecha de Ingreso: 19-marzo-2005
Ubicación: En un lugar del planeta Tierra
Versión: La ultima estable
Mensajes: 16.483
Agradecimientos: 564
Agradecido 2.416 Veces en 1.627 Mensajes
Poder de Credibilidad: 10
DiabloRojo llegará a ser famoso muy pronto
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
Responder Citando
  #4  
Antiguo 22-may-2013, 13:48
Avatar de Tripanarium
Tripanarium Tripanarium está desconectado
Habitual
 
Fecha de Ingreso: 13-marzo-2007
Ubicación: A 8 minutos del Sol
Versión: 13.1 - (86-64) KDE, LXQt
Mensajes: 211
Agradecimientos: 170
Agradecido 28 Veces en 26 Mensajes
Poder de Credibilidad: 11
Tripanarium está en el buen camino
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.
Responder Citando
  #5  
Antiguo 23-may-2013, 12:07
Avatar de xisco
xisco xisco está desconectado
Miembro FOROSuSE
 
Fecha de Ingreso: 23-marzo-2006
Ubicación: Sector Horchata
Versión: La ultima estable
Mensajes: 1.685
Agradecimientos: 29
Agradecido 157 Veces en 129 Mensajes
Poder de Credibilidad: 13
xisco está en el buen camino
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
Responder Citando
  #6  
Antiguo 23-may-2013, 15:26
Avatar de karlggest
karlggest karlggest está desconectado
Moderador
 
Fecha de Ingreso: 07-febrero-2007
Ubicación: Ourense
Versión: Leap 42.3
Mensajes: 8.175
Agradecimientos: 40
Agradecido 1.238 Veces en 910 Mensajes
Poder de Credibilidad: 19
karlggest está en el buen camino
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!!
__________________
http://sementedotempo.blogspot.com/

-Si lo creen unos pocos, es un delirio; si son muchos los creyentes, es una religión
Responder Citando
El Siguiente Usuario Ha Dado las Gracias a karlggest Por Este Mensaje:
erdosain9 (10-nov-2014)
Respuesta

Marcadores

Etiquetas
desfragmentar


(0 miembros y 1 visitantes)
 
Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Desactivado

Ir al Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Montaje de sistemas de archivos con /etc/fstab tranzorx FAQs, Manuales y Tutoriales 1 17-abr-2013 14:38
Estado actual de Gnu/Linux en el Desktop gery General OpenSUSE 11 29-nov-2011 10:01
Problemas con Yast2 e instalacion de paquetes en opensuse 11.3 ejdvc656 General OpenSUSE 28 01-oct-2010 02:40
Wiimote para Suse 10.2 Serfaksan General OpenSUSE 0 22-may-2007 02:16
Acelerando los discos duros en GNU/Linux DiabloRojo FAQs, Manuales y Tutoriales 0 31-oct-2006 20:42



Síguenos en Twitter Suscríbete a nuestras noticias Acompáñanos en Facebook


La franja horaria es GMT +2. Ahora son las 11:17.
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.

Esta página está bajo una licencia de Creative Commons, salvo que no se indique lo contrario.
Creative Commons License

Valid CSS!

Diseño por:Designed by: vbdesigns.devbdesigns.de 
Contáctenos - ForoSUSE - Archivo - Declaración de Privacidad - Arriba