Repository 32bit  Forum
Repository 64bit  Wiki

FileOnFile

Da Slacky.eu.
Versione delle 13:06, 11 set 2006, autore: Gohanz (Discussione | contributi)

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)


Questa guida trattera' il metodo di formattare un file (che creeremo) e montarlo su una dir. Questa e' una tecnica molto usata anche se molti la ignorano.Basti pensare ai file .iso dei cds o dvd.L'utilita' e' molto vasta anche se capisco di primo impatto non traspare:un'idea astrusa puo' essere quella della sostituzione in alcuni casi molto particolari (e fantasiosi) delle quote per la registrazione dello spazio utilizzato da un determinato utente.


Prima di tutto bisogna creare il file che servira' per i nostri scopi e ovviamente la sua grandezza la dobbiamo decidere noi!!Per ottenere questo risultato utilizzeremo il comando "dd" (vedere le pagine di man per approfondire).Ammettiamo di voler creare un file da ben 100Mb tenendo presente che un ogni settore che deve scrivere dd occupa 512 bytes sul file.Quindi per raggiungere una quota di 100Mb bisogna scrivere

20*10^6(512*20*10^6=100Mb circa)

settori.Il comando definitivo sara' percio':

dd if=/dev/zero of=/My/PATH/FILE count=20000000

L'"if" indica ,nel comando dd, qual'e' la sorgente di input (da non confondere con l'if nella programmazione). /dev/zero non fa altro che generare un flusso di 0 quindi nel nostro caso un flusso di bit fino a raggiungere i 100Mb circa."of" indica invece quale sara' la destinazione del flusso di dati(in questo caso il file di nome FILE nel path /MY/PATH).Infine "count" come ho preannunciato prima indica il numero di settori da scrivere nel file.

Ottenuto il file desiderato dobbiamo formattarlo (useremo ext2 ma potete usare quello che volete):

mke2fs /MY/PATH/FILE

OUTPUT:
/MY/PATH/FILE is not a block special device.
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
2512 inodes, 10000 blocks
500 blocks (5.00%) reserved for the super user
First data block=1
2 block groups
8192 blocks per group, 8192 fragments per group
1256 inodes per group
Superblock backups stored on blocks:
8193


Writing inode tables: done
Writing superblocks and filesystem accounting information: done


This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

dare conferma di voler procedere.

Ora l'ultima cosa da fare e' montare il nostro file in una dir che desideriamo (per esempio un'ipotetica /mnt/FILE).Esistono dei particolari device in /dev/ definiti loop (all'incirca sono 8 ma il numero e' facilmente incrementabile modificando il kernel).Ora li utilizzeremo in modo casuale per i nostri scopi:

mount -o loop /MY/PATH/FILE /mnt/FILE/

Con l'optione "-o loop" non facciamo altro che chiedere al kernel di decidere quale loop scegliere (per evitare che un loop occupato venga forzato).Ovviamente e' possibile anche decidere quale loop occupare: mount -o loop=/dev/loop0 /MY/PATH/FILE /mnt/FILE

ATTENZIONE!io personalmente consiglio di far fare al kernel (errare umano est)!

Abbiamo montato il nostro file! Non ci resta che riempirlo ed usarlo come vogliamo.Usate il classico "df" per determinare la buona riuscita della procedura.

Autore: Sickk
Strumenti personali
Namespace

Varianti