[gilug.org] Crear un fitxer per mida
Narcis Garcia - GiLUG informatica actiu net
2010-12-16 09:24:37 UTC
És bo saber-ho.
Gracies.
Al 16/12/10 10:14, En/na Lluís Batlle i Rossell ha escrit:
> On 16/12/10 09:29, Narcis Garcia - GiLUG wrote:
>> Hola, vull saber crear un fitxer reservant primer l'espai, i després
>> escriure-hi el contingut. El suport de destinació és lent i el fitxer ha
>> de ser gran, així que no vull enregistrar vàries vegades el mateix.
>>
>> Sé que puc fer això per a crear un fitxer de 1G
>>
>> dd if=/dev/zero of=elmeufitxer bs=1M count=1024
>> però després hi hauria de tornar a escriure el Gigabyte sencer per a
>> posar-hi el contingut. M'he trobat diverses vegades amb aquest problema
>> sense resoldre.
>>
>> Algú sap com crear el fitxer només assignant l'espai, és a dir, sense
>> haver-lo d'emplenar?
>
> Com que segurament fas servir un sistema de fitxers que suporta forats,
> no hi ha altra manera de reservar l'espai que no sigui escrivint-lo.
>
> "truncate" permet fer un fitxer amb forats de la mida que vulguis, però
> tot i que hi tindràs un fitxer ple de zeros de la mida que has dit, no
> reservarà l'espai a disc fins que hi posis dades a algun lloc. I només
> agafarà espai per les dades que hagis escrit, encara que siguin
> escampades. (la diferència de números entre "ls -l" (mida del fitxer) i
> "ls -s" (el que ocupa a disc).
> En principi això dels forats és un avantatge, i no un inconvenient, i és
> per a estalviar espai de disc.
>
> Amb la memòria de processos el linux va de manera semblant...
> "malloc(1000000)" no vol dir que reservis un 1MB de memòria, sino que
> només se'n reserven pàgines de veritat quan hi escrius.
>
> Apa!
>
Més informació sobre la llista de correu gilug