On 24/05/13 22:24, fernando sainz wrote:
Hola:
Creo que se me ha escapado una respuesta vacía, un desliz del ratón en gmail...
El día 24 de mayo de 2013 22:04, jors<worby...@gmail.com> escribió:
Buenas lista,
Me estoy volviendo un poco tarumba con el tema de los hardlinks y cuánto
ocupan, a ver si alguien puede arrojarme un poco de luz al tema.
La teoría dice que un hardlink no es más que una referencia a un inodo de un
fichero existente. Y por tanto entiendo que sólo debería ocupar el espacio
necesario para guardar esa referencia.
Y creo que entiendes bien.
Lo que pasa es que para el sistema operativo tanto el fichero como el
hard link son la misma cosa, un fichero.
De hecho el fichero se borra cuando borras el último hard link que
exista para ese fichero.
Pues bien, para calcular el espacio ocupado en disco por lo visto uno no se
puede fiar de "ls" porque toma el mismo espacio para los hardlinks que para
los ficheros que éstos referencian:
user@host:~$ mkdir test
user@host:~$ cd test
user@host:~/test$ mkdir test1 test2
user@host:~/test$ dd if=/dev/zero of=test1/test.dd count=1 bs=1M
user@host:~/test$ ls -lh test1/
total 1,0M
-rw-r--r-- 1 user user 1,0M may 24 21:09 test.dd
user@host:~/test$ ln test1/test.dd test1/test.ddhl1
user@host:~/test$ ls -lh test1/
total 2,0M
-rw-r--r-- 2 user user 1,0M may 24 21:09 test.dd
-rw-r--r-- 2 user user 1,0M may 24 21:09 test.ddhl1
Eso lo tengo asumido. En cambio, el comando "du" de serie parece algo más
listo porque sabe qué es y qué no un hardlink y a no ser que le indiques la
opción -l, no cuenta en espacio ocupado por los hardlinks:
user@host:~/test$ du test1/
1028 test1/
user@host:~/test$ du test1/*
1024 test1/test.dd
user@host:~/test$ du -l test1/*
1024 test1/test.dd
1024 test1/test.ddhl1
Pero ahora creemos sólo 2 hardlinks en el segundo directorio:
user@host:~/test$ ln test1/test.dd test2/test.ddhl2
user@host:~/test$ ln test1/test.dd test2/test.ddhl3
user@host:~/test$ du test2/
1028 test2/
user@host:~/test$ du -hs test1/*
1,0M test1/test.dd
user@host:~/test$ du -hs test2/*
1,0M test2/test.ddhl2
¿Qué sucedió en el último paso? Du contó el espacio ocupado por un hardlink
a pesar de no haberle indicado que los tenga en cuenta para el recuento de
espacio :(
Todo este rollo viene porque tengo un directorio lleno sólo de hardlinks
(comprobado con "stat" archivo a archivo) que según "du" ocupa 5.8GB y la
verdad es que no lo entiendo:
Bueno, no se como funciona du, pero ten en cuenta que si borras los
ficheros, como te digo estos siguen existiendo bajo el hardlink, con
lo cual realmente ocupan ese espacio. Tal vez du cuando encuentra dos
entradas en un directorio que apuntan al mismo sitio es capaz de
descontar una.
Sí y no.
En realidad sólo se ocupa el espacio en disco de ese fichero una vez, y
sus hardlinks al mismo sólo son referencias al mismo inodo. Por tanto,
en términos de espacio la referencia debe ocupar muy muy poquito (del
orden de pocos kb's, a lo sumo).
Yo pensaba que "du" era constante en ese aspecto: es decir, que a no ser
que le indicaras explícitamente que quieres que te cuente el espacio de
los hardlinks como si fueran un fichero más (y no una referencia a uno
ya existente), los saltaba. Y veo que no es siempre así.
Salut,
jors
S2.
root@vg:/dir/bck# for i in `ls`; do echo -ne "File ${i}: "; stat ${i} | grep
Links | awk '{ print $5" "$6 }'
File a1.dmp: Links: 4
File a1.log: Links: 4
File a2.dmp: Links: 4
File a2.log: Links: 4
(...)
root@vg:/dir/bck# cd ..
root@vg:/dir# du bck/
5997988 bck/
root@vg:/dir# du -h bck/
5.8G bck/
Si a alguien se le ocurre algo, agradecido.
Salut,
jors
--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/519fcf39.3020...@gmail.com