[RISOLTO] Bash:stimare dimensione di una directory compressa

Postate qui se avete consigli per migliorare i pacchetti disponibili in questo sito o se avete problemi con installazione, funzionamento o altro.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il nome del pacchetto.
2) Specificare se discussione/suggerimento o richiesta d'aiuto.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
tom
Packager
Packager
Messaggi: 407
Iscritto il: dom 1 nov 2009, 12:53
Nome Cognome: Tommaso D'Anna
Slackware: 13.37
Kernel: 2.6.37.6
Desktop: xfce

[RISOLTO] Bash:stimare dimensione di una directory compressa

Messaggio da tom »

Esiste un modo per determinare in bash a priori le dimensioni che una directory assumerà una volta compressa in tar.xz (oppure in altre forme di compressione) PRIMA che il file compresso sia creato?

Mi spiego meglio: sto scrivendo uno script in bash per il backup. Ipotizziamo di trovarci ad un certo punto nella directory pippo che dovrà essere compressa dallo script in pippo.tar.xz, le dimensioni (in megabyte 1024x1024) della directory pippo le posso visualizzare facilmente così:

Codice: Seleziona tutto

du -sm .                     # assumendo di trovarci all'interno di pippo
ma supponiamo ora che io voglia stimare le dimensioni (sempre in megabyte 1024x1024) del futuro (non ancora creato) file compresso pippo.tar.xz... esiste un modo?
Ultima modifica di tom il lun 20 giu 2011, 21:05, modificato 1 volta in totale.

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: Bash: stimare dimensione di una directory compressa

Messaggio da Mario Vanoni »

Impossibile!
Se la directory contiene solo "flat files",
puoi valutate la compressione secondo il manuale del compressore.
Se la directory contiene files mescolati con *.jpg, *.wav ecc. dimenticalo.
Ho fatto un test con un file *.jpg
4'846'050 bytes, compresso con bzip2(1)
4'798'402 bytes, non prevedibile.

tom
Packager
Packager
Messaggi: 407
Iscritto il: dom 1 nov 2009, 12:53
Nome Cognome: Tommaso D'Anna
Slackware: 13.37
Kernel: 2.6.37.6
Desktop: xfce

Re: Bash: stimare dimensione di una directory compressa

Messaggio da tom »

E invece ci sono riuscito! Per chi in futuro abbia questo dubbio la soluzione è:

Codice: Seleziona tutto

tar cvJf - pippo | wc -c                         # in byte 
echo $(( $(tar cvJf - pippo | wc -c)/10**3 ))    # in kilobyte (1 Kb = 1.000 byte)
echo $(( $(tar cvJf - pippo | wc -c)/10**6 ))    # in megabyte (1 Mb = 1.000.000 byte)
echo $(( $(tar cvJf - pippo | wc -c)/1024 ))     # in kilobyte (1 Kb = 1.024 byte)
echo $(( $(tar cvJf - pippo | wc -c)/1024**2 ))  # in megabyte (1 Mb = 1.048.576 byte)
Metto il tag [RISOLTO].

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6629
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: [RISOLTO] Bash:stimare dimensione di una directory compr

Messaggio da targzeta »

Alcune note:
  • il comando tar con l'opzione 'c' manda già l'output sullo stdout, quindi l'opzione 'f -' non serve.
  • anche l'opzione 'v' potresti evitarla, anche se poi, alla fine, dipende da cosa ci vuoi fare.
  • Così tu hai "compresso" i dati. Non è proprio quello che avevi chiesto e a cui, credo, Mario ti ha risposto. Infatti, senza processare i dati, è difficile fare ciò che chiedi.
Emanuele
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
Toni
Linux 3.x
Linux 3.x
Messaggi: 999
Iscritto il: lun 30 gen 2006, 22:08
Slackware: slackware-14
Kernel: 3.10.5
Desktop: i3
Località: milano

Re: [RISOLTO] Bash:stimare dimensione di una directory compr

Messaggio da Toni »

spina ha scritto:Alcune note:
  • il comando tar con l'opzione 'c' manda già l'output sullo stdout, quindi l'opzione 'f -' non serve.
  • anche l'opzione 'v' potresti evitarla, anche se poi, alla fine, dipende da cosa ci vuoi fare.
  • Così tu hai "compresso" i dati. Non è proprio quello che avevi chiesto e a cui, credo, Mario ti ha risposto. Infatti, senza processare i dati, è difficile fare ciò che chiedi.
Emanuele
Per stabilire il livello di compressione ottenibile bisogna conoscere la "natura" della sequenza dati , più essa è casuale minore è la compressione ottenibile. Al limite è nulla.

Uno strumento utile per valutare l'entropia è ent
http://www.fourmilab.ch/random/

Rispondi