El día 24 de mayo de 2013 22:36, jors <worby...@gmail.com> escribió:
> 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
>
>

Es complicado, pero entiendo que cuando se crea un fichero se crea una
entrada con el nombre del fichero y cuando se crea un hardlink se crea
otra entrada igual y se incrementa un contador que mantiene el numero
de entradas que hay sobre un fichero y cuando llega a cero se borra.
Por tanto todas las entradas (hardlinks) son el fichero y si haces un
du sobre una parte de la estructura de directorios te lo cuenta. Solo
en el caso de que se encuentre mas de una vez un enlace lo ignora.
Entiendo que el fichero no pertenece al primer hardlink que se crea al
crearlo sino a todos por igual, no hay diferencia entre el fichero
original y el hardlink salvo el nombre...

NO se si me explico muy bien :-)

S2.


--
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/CAGw=rhhzjqc8exdoefclwv1rf9o5qr27ufrvpcuslzdpg1k...@mail.gmail.com

Responder a