El día 24 de mayo de 2013 23:07, jors <worby...@gmail.com> escribió:
> On 24/05/13 23:03, fernando sainz wrote:
>>
>> 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 :-)
>
>
> Sí, perfectamente! Coincido contigo -no se si realmente será así- en que no
> hay diferencia entre fichero original y posteriores hardlinks.
>
> El tema es si existe alguna utilidad/aplicación/modo que me pueda ayudar a
> calcular el tamaño de una estructura de directorios SIN tener en cuenta los
> hardlinks... pero al mismo tiempo, sí que tengo que contar uno de ellos
> porque sería el correspondiente al tamaño del archivo "original" xD
>
>
> Salut,
> jors
>
>
No lo sé, entiendo que cuando hagas un du de una estructura de
directorios, tal vez este sea capaz de eliminar el espacio de los hard
links que encuentre debajo, pero si lo haces por partes te saldrá
repetido.

Mira a ver si la wikipedia te aclara algo.
http://en.wikipedia.org/wiki/Hard_link
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=rHgZRF_amoq6AHOPnBo2ynVqJqurKKK02nCuJTwFJW=a...@mail.gmail.com

Responder a