Quest'oggi, la mia rubrica sul terminale si concentrerà sulla compressione/archiviazione dei files nel nostro computer, sfruttando il comando zip

Uso base.

L'uso base del comando zip è molto semplice, ed è zip nomenuovo.zip file_da_zippare. Vediamo velocemente un esempio: nella directory attuale è presente il seguente file
$ ls -lh
-rw-rw-rw- 1 antonio antonio 171K 2004-10-05 23:28 assembly.ppt
Come possiamo facilmente notare il suo peso è di 171Kb. Proviamo adesso a comprimerlo tramite zip
$ zip assembly.zip assembly.ppt
adding: assembly.ppt (deflated 84%)
Stando a quanto ci dice il comando, il file è stato compresso dell'84%! Possiamo immediatamente verificare la cosa
$ ls -lh
totale 204K
-rw-rw-rw- 1 antonio antonio 171K 2004-10-05 23:28 assembly.ppt
-rw-r--r-- 1 antonio antonio 28K 2009-09-16 01:28 assembly.zip
Da 171Kb a soli 28Kb!! Non mi sembra poco... Ottimo se vogliamo mandare i nostri files via email.

L'unzip

Se compattiamo un immagine dobbiamo essere naturalmente anche capaci di scompattarla per recuperarne il contenuto originario, e per fare questo il comando da dare è unzip archivio_da_estrarre.zip. Quindi, per riavere il contenuto del file appena zippato ci basta fare:
$ unzip assembly.zip
Archive: assembly.zip
inflating: assembly.ppt
Et voilà :)


Zippiamoli in tanti.

Se invece vogliamo comprimere più files contemporaneamente la sintassi da dare è zip nomenuovo.zip file1 file2 ... fileN. Naturalmente, come tutti sanno un esempio vale più di mille parole, perciò vi mostrerò la compressione di alcune delle mie presentazioni del corso di elettronica
$ zip elettronica.zip algebra_boobleana.ppt assembly.ppt diodi.ppt
adding: algebra_boobleana.ppt (deflated 81%)
adding: assembly.ppt (deflated 84%)
adding: diodi.ppt (deflated 71%)
Ed ecco le tre presentazioni unite in un unico file di soli
$ ls -lh
-rw-rw-rw- 1 antonio antonio 233K 2004-10-13 14:57 algebra_boobleana.ppt
-rw-rw-rw- 1 antonio antonio 171K 2004-10-05 23:28 assembly.ppt
-rw-rw-rw- 1 antonio antonio 185K 2003-03-04 08:21 diodi.ppt
-rw-r--r-- 1 antonio antonio 125K 2009-09-16 01:32 elettronica.zip
125Kb!! Contro i 233+171+185 iniziali :) (si, mi scoccia fare il conto :P)
Naturalmente se vogliamo possiamo anche comprimere l'intera cartella, in modo tale che chi dovesse scompattare l'archivio non si ritrovi 3 (ma potrebbero essere 100) files buttati nel mezzo, ma una comoda cartella che contiene li stessi. La sintassi per comprimere una cartella è del tutto simile, nel nostro caso gli elementi erano già presenti in una cartella chiamata "Elettronica", quindi vado indietro di una directory (con cd ..) e zippo:
:~/Documenti/Elettronica$ cd ..
:~/Documenti$ zip elettronica.zip Elettronica
adding: Elettronica/ (stored 0%)

Proteggere gli archivi con password

Possiamo naturalmente immettere una password, e far criptare il contenuto dell'archivio, in modo tale che solo chi desideriamo sia in grado di scompattarlo e soprirne i files. Per fare questo l'opzione è -e, ed immediatamente dopo il sistema ci chiederà la password da inserire (e ci chiederà per sicurezza di riconfermarla). Vediamo un esempio:
$ zip -e elettronica.zip Elettronica
Enter password:
Verify password:
adding: Elettronica/ (stored 0%)
Naturalmente, poi, all'utilizzo di unzip tale password ci verrà richiesta
$ unzip elettronica.zip
Archive: elettronica.zip
[elettronica.zip] Elettronica/ password:
creating: Elettronica/

Compressione o velocità?

Naturalmente, archiviando un file è possibile decidere il grado di compressione con cui verrà preparato l'archivio. Questo grado può essere scelto da 0 a 9, dove 0 indica compressione nulla e velocità massima, e 9 compressione massima e velocità minima. Possiamo fare alcune prove per verificare l'effetto di questi parametri:
$ zip -9 doc.zip doc.dvi
updating: doc.dvi (deflated 30%)
antonio@ubuntu:~$ zip -0 doc.zip doc.dvi
updating: doc.dvi (stored 0%)
La differenza è più che evidente. Alla luce della praticamente indistinguibile velocità di compressione (almeno per files non troppo grandi) consiglio sempre di sfruttare l'opzione -9.

Guardiamo dentro un zip

Per elencare i files all'interno di un archivio zip l'opzione di unzip è -l, e va usata nel seguente modo:
$ zip immagini.zip *
adding: banner_gghiotta.png (stored 0%)
adding: banner_gghiotta.xcf (deflated 45%)
adding: bkgr.jpg (deflated 5%)
adding: bkgr.xcf (deflated 41%)
adding: desktop.png (deflated 1%)
adding: kiwi.png (deflated 0%)

$ unzip -l immagini.zip
Archive: immagini.zip
Length Date Time Name
-------- ---- ---- ----
25231 09-14-09 18:02 banner_gghiotta.png
150838 09-14-09 18:01 banner_gghiotta.xcf
201257 09-15-09 01:49 bkgr.jpg
879834 09-15-09 01:49 bkgr.xcf
423413 09-15-09 01:52 desktop.png
172489 09-14-09 21:09 kiwi.png
-------- -------
1853062 6 files
Qui ho mostrato un altro uso dei caratteri speciali, scrivendo zip immagini.zip *, il carattere "*" mi ha permesso di dire "tutti i files", cosicchè l'archivio andasse a contenere tutti i files presenti nella directory in cui mi trovavo. Poi il comando unzip -l immagini.zip mi permette di vedere il contenuto dell'archivio, inclusi peso (totale e del singolo files, relativi sempre ai file non compressi), data e ora dell'ultima modifica e nome.

Check UP

Se infine vogliamo controllare se il contenuto del nostro file si è rovinato con il tempo (eh si, i zip invecchiano :P) possiamo sfruttare l'opzione -t:
$ unzip -t immagini.zip
Archive: immagini.zip
testing: banner_gghiotta.png OK
testing: banner_gghiotta.xcf OK
testing: bkgr.jpg OK
testing: bkgr.xcf OK
testing: desktop.png OK
testing: kiwi.png OK
No errors detected in compressed data of immagini.zip.

Come sempre la mia è stata una spolverata per farvi tornare alla mente i principi base (ormai nessuno più compatta/scompatta da terminale, e in ambito Linux/Unix spesse volte è usato tar/gzip, cui probabilmente dedicherò un post) della compressione in zip, che può farvi molto comodo essendo la più usata in ambito windows, e quindi vi permette ottima portabilità dei vostri archivi.
Come sempre le informazioni migliori non si ottengono da questo post ma dall' --help del comando, che vi consiglio vivamente di visualizzare.

Ciao a tutti!

| edit post

0 Reply to "InZIPpiamo i nostri files!"

  • Posta un commento

    Se ti è piaciuto l'articolo, o hai domande, lascia qui un commento! Se invece vuoi essere sempre aggiornato sulle novità del blog collegati ai Feed RSS.