Repository 32bit  Forum
Repository 64bit  Wiki

[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.

[RISOLTO] Bash:stimare dimensione di una directory compressa

Messaggioda tom » lun giu 20, 2011 16:39

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 giu 20, 2011 20:05, modificato 1 volta in totale.
tom
Packager
Packager
 
Messaggi: 407
Iscritto il: dom nov 01, 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

Messaggioda Mario Vanoni » lun giu 20, 2011 19:52

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.
Mario Vanoni
Iper Master
Iper Master
 
Messaggi: 3174
Iscritto il: lun set 03, 2007 20:20
Località: Cuasso al Monte (VA)
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey

Re: Bash: stimare dimensione di una directory compressa

Messaggioda tom » lun giu 20, 2011 20:03

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].
tom
Packager
Packager
 
Messaggi: 407
Iscritto il: dom nov 01, 2009 12:53
Nome Cognome: Tommaso D'Anna
Slackware: 13.37
Kernel: 2.6.37.6
Desktop: xfce

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

Messaggioda targzeta » lun giu 20, 2011 23:12

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
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6200
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

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

Messaggioda Toni » lun giu 20, 2011 23:26

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/
Avatar utente
Toni
Linux 2.6
Linux 2.6
 
Messaggi: 993
Iscritto il: lun gen 30, 2006 22:08
Località: milano
Slackware: slackware-14
Kernel: 3.10.5
Desktop: i3


Torna a Packages

Chi c’è in linea

Visitano il forum: Baidu [Spider], Bing [Bot] e 1 ospite