Newsgroup: it.comp.lang.c++
Titolo: Suddividere le directory

Salve,
dovrei creare un programma che ripartisca le directory sencondo la
grandezza. Mi spiego meglio. Ho la necessitá di portare una grande
quantitá di dati di un hard disk (pieno di cartelle e files) su dvd e
vorrei sapere se é possibile creare un programma che divida le directory
di tale hard disk in cartelle da 4,5 gb in modo da masterizzarli
successivamente senza dover scegliere ogni volta cartella per cartella.
Oppure se esiste potreste dirmene qualcuno?
Grazie
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Oppure se esiste potreste dirmene qualcuno?
Il tuo programma di masterizzazione!
...
..
...
prob. non te ne sei mai accorto, ma se crei un progetto che contiene più 
dati di quanti il supporto ne possa contenere, il programma non ti ferma 
ed aumenta il numero di supporti necessari alla masterizzazione ( ci 
sarà un indicatore da qualche parte, ce l'hanno tutti ).
Quando vai a masterizzare ti chiede dvd1, dvd2 ecc., ripartendo 
automaticamente i dati.
Ovviamente non l'ho mai fatto, non sono così sfaticato! oltretutto, se 
lo facessi non riuscirei a trovare più niente!

 wrote in message
news:45969ded$0$19101$
4faf...@reader4.news.tin.it



 Conosci qualche programma?
Cribbio ... quello che dici tu te lo fanno i programmi per BACKUP
I software di masterizzazione ( Nero, Roxio, Alchol120% ) fanno 
ESATTAMENTE QUELLO CHE SERVE A TE, nessuna estensione o simili!
dividono solo le cartelle ed i file in modo da riempire un disco, quando 
è pieno passano al successivo!
Ma poi basta perdere 5 min per suddividere le cartelle in modo di molto 
più efficiente di come farebbe un qualsiasi programma! ( poiché se li 
hai divisi tu ti ricordi pure cosa ci hai messo e dove )

Oppure se esiste potreste dirmene qualcuno?
Immaginando che non esista nessun programma, devi seguire questa
strada:
- Calcoli la dimensione reale(*) di ogni cartella.
- Iterativamente le raggruppi in blocchi <= 4.5Gb.
- Masterizzi un blocco per DVD.
(*) Su disco lo spazio minimo e' rappresentato dalla dimensione
del settore, quindi la grandezza di un file e' sempre
sovradimensionata per eccesso. Al momento non conosco la gestione
dei settori su un DVD (forse non esistono neppure!), ma tieni
sempre presente di lasciare un po' di spazio per la TOC (tabella
dei contenuti, cioe' la struttura delle cartelle).

 del settore, 
aggiungo che, nei sistemi FAT16 o FAT32 (non so NTSC che è 
profondamente diverso e forse più unix like), i settori logici 
del disco non possono manco essere allocati singolarmente, ma in 
clusters, proporzionali alla dimensione della partizione.
In generale FAT32 alloca con granularità molto più fina (e 
risparmiosa) di FAT16 (perché con descrittori a più bit può 
allorare un maggior numero di clusters distinti).
Resta il fatto che, a meno di non compattare i files in 
container, devi informarti con una chiamata alla API del disco 
del tuo OS circa la dimensione del CLUSTER (e non del settore, 
che è quasi ovunque 512 byte) della partizione da cui leggi dati.
Quindi poi arrotonta ogni dimensione di file alla dimensione del 
cluster successivo.
Una formula del tipo (occhio, non sto a pensarci molto, controlla !)
ingombro =
cluster_size * ((real_file_size + cluster_size - 1) / 
((long)(cluster_size)))
Come ti hanno già detto forza il calcolo su operandi interi in 
modo da fare la dimensione intera che scarta la virgola
es., se cluste_rsize è 8192 (8 KB) e il file di 1436544 Byte
1436544 + 8192 - 1 = 1444735
1444735 / 8192 = [176,3592529296875] -> 176
(troncato, non arrotondato)
176 * 8192 = 1441792
lo spazio sprecato senza la compattazione in unico container è, 
nell'esempio : 1441792 - 1436544 = 5248 Byte (caso lievemente 
più sfigato della media, che dovrebbe essere mezzo cluster 
esatto in una distribuzione neutra, omogenea, di dimensioni di 
files (cosa praticamente introvabile).
Ma non è finita (anzi, a dire il vero ho scritto sinora cose 
poco utili, anche se vere .... Si perché a prescindere 
dall'ingombro su disco, tu devi anche scoprire la granularità di 
allocazione spazio sul CD o DVD di destinazione, ti frega poco 
lo spazio allocato dal disco origine. Quindi il discorso fallo 
si ma, al converso, relativamente al CD-DVD. Per il disco 
origine assumi che vengano effettivamente letti solo i dati 
effettivi, al netto dello spazio sprecato nell'allocazione a 
cluster.
Ora FORSE (documentati, non lo so) sul CD-DVD i settori sono 
allocabili singolarmente (e non so se siano 512 o 1024 o anche 
altro). Temo anche che la situazione sia diversa a seconda del 
formato che scegli (l'UDF mi pare più sprecoso, aggiungendo vari 
metadati per l'indirizzamento che nelle modalità Track-at-once o 
ancor meglio Disk-at-once forse possono essere limitate).
Non è banalissimo quel che vuoi fare se non conosci esattamente 
come interrogare l'hardware e le intenzioni/settaggi del progr. 
di masterizzazione.
Del tipo, magari vuoi lasciare un disco aperto, o fare 
multisessione e simili ... beh, devi scoprire quanto over-space 
il progr. di masteriz. riserva sul disco. Questi bisogni imho 
possono anche eccedere i conteggi spiccioli visti prima.
Cmq, personalmente, condivido la tua esigenza, e mi farebbe 
comodo un programma di suddivisione in chiaro delle cartelle e 
non che blindi tutto in formati proprietari che se ti bruci un 
disco perdi TUTTO QUANTO !
ciao
Soviet_Mario


Grazie dei consigli ragazzi :)
