5.12 Archiviazione e compressione
Il software è composto da file. Una stessa applicazione può essere composta da più file, anche
disposti in varie directory. Può essere agevole poter raccogliere tutti i file che appartengono ad
una stessa applicazione o tutti quelli di uno stesso tipo, all’interno di un unico file, detto
archivio. Tale necessità sentita inizialmente per l’archiviazione dei file su nastro
magnetico, può essere gestita per mezzo dei comandi tar o ar (man page tar(1) o
ar(1))
____________________________________________________________________
Comando: tar
Path: /bin/tar
SINTASSI
$ tar [option] file1 [file2 ...]
DESCRIZIONE
-
option è l’insieme delle opzioni che modificano il comportamento di tar. Può assumere i
seguenti valori:
-
-A | --catenate | --concatenate
concatena più archivi;
-
-c | --create
crea un nuovo archivio;
-
-d | --diff | --compare
visualizza le differenze tra i file presenti in archivio e quelli sul
fylesystem;
- --delete
rimuove i file dall’archivio (da non utilizzare con i nastri magnetici);
-
-r | --append
aggiunge file ad un archivio;
-
-t | --list
elenca il contenuto di un archivio;
-
-u | --update
aggiunge all’archivio i file più recenti rispetto a quelli presenti
nell’archivio stesso;
-
-x | --extract | --get
estrae i file da un archivio;
- --atime-preserve
indica di non cambiare la data/ora dell’ultimo accesso ai file inseriti
nell’archivio;
-
-b n | --block-size n
specifica la dimensione dei blocchi: n × 512 byte (per default n è 20);
-
-B | --read-full-blocks
indica di reimpostare la dimensione dei blocchi durante la lettura dei
file (per la lettura delle pipe BSD 4.2);
-
-C dir | --directory dir
indica di cambiare la directory dir;
-
--checkpoint
indica di visualizzare i nomi delle directory mentre legge l’archivio;
-
-f [host:]F | --file [host:]F
indica di utilizzare l’archivio o il dispositivo F (default /dev/rmt0);
-
--force-local
indica che il file è locale anche se è specificato con il carattere ‘:’;
-
-F file | --info-script file | --new-volume-script file
indica di eseguire lo script file alla fine di ogni nastro (implica -M);
-
-G | --incremental
indica di eseguire le operazioni con il vecchio formato GNU di backup
incrementale;
-
-g | --listed-incremental
indica di eseguire le operazioni con il nuovo formato GNU di backup
incrementale;
-
-h | --dereference
indica di non eseguire l’archiviazione dei symbolic link, ma di
archiviare direttamente i file ai quali essi si riferiscono;
-
-i | --ignore-zeros
indica di ignorare i blocchi nulli presenti nell’archivio (in genere
corrispondono alla fine dei file);
-
--ignore-failed-read
indica di non terminare l’esecuzione nel caso in cui si incontrino
problemi di lettura di file;
-
-k | --keep-old-files
indica di mantenere i file esistenti, anziché rimpiazzarli con quelli
dell’archivio;
-
-K file | --starting-file file
indica di iniziare le operazioni sull’archivio a partire dal file file;
-
-l | --one-file-system
indica di rimanere sullo stesso filesystem nella creazione dell’archivio;
-
-L n | --tape-length n
indica di cambiare nastro magentico dopo la scrittura di n ×1 024
byte;
-
-m | --modification-time
indica di non estrarre la data/ora dell’ultima modifica dei file;
-
-M | --multi-volume
indica di compiere l’operazione su archivi multivolume;
-
-N date | --after-date date | --newer date
indica di memorizzare soltanto i file più recenti di date;
-
-o | --old-archive | --portability
indica di scrivere un archivio in formato V7 piuttosto che in formato
ANSI;
-
-O | --to-stdout
indica di estrarre i file sullo standard output;
-
-p | --same-permissions | --preserve-permissions
indica di estrarre tutti i permessi dei file;
-
-P | --absolute-paths
indica di non rimuovere i primi caratteri / dai nomi dei file;
-
--preserve
come -p -s;
-
-R | --record-number
indica di visualizzare il numero di record presenti nell’archivio in ogni
messaggio;
-
--remove-files
indica di rimuovere i file dopo averli aggiunti all’archivio;
-
-s | --same-order | --preserve-order
indica di estrarre i file dall’archivio secondo l’ordine nel quale sono
stati memorizzati;
-
--same-owner
indica di creare i file estratti con lo stesso proprietario memorizzato
nell’archivio;
-
-S | --sparse
indica di gestire in maniera più efficiente gli sparse file;
-
-T file | --file-from file
indica di considerare l’elenco dei file da estrarre o creare dal file file;
-
--null con l’opzione -T, indica di considerare i nomi dei file con il carattere
NUL come terminatore (diasbilita -C);
-
--totals
indica di visualizzare il numero dei byte scritti con --create;
-
-v | --verbose
indica di visualizzare i nomi dei file man mano che vengono elaborati;
-
-V name | --label name
indica di creare l’archivio con il nome di volume name;
-
--version
visualizza la versione di tar;
-
-w | --interactive | --confirmation
indica di richiedere una conferma prima di ogni operazione;
-
-W | --verify
indica di verificare l’archivio dopo averlo scritto;
-
--exclude file
indica di escludere il file file;
-
-X file | --exclude-from file
indica di escludere l’elenco dei file presente nel file file;
-
-Z | --compress | --uncompress
indica di filtrare l’operazione con compress;
-
-z | --gzip | --ungzip
indica di filtrare l’operazione con gzip;
-
--use-compress-program prog
indica di filtrare l’operazione con il programma prog (che deve
accettare l’opzione -d);
-
--block-compress
indica di bloccare l’output della compressione per i nastri magnetici;
-
-n[l|m|h]
specifica la periferica e la densità;
-
filei indica il file o il path da elaborare o il nome del file archivio;
______________________
[da completare ...]
Talvolta capita che un’informazione, un file (o un insieme di file), debba essere trasferita
mediante un floppy disk, posta elettronica o FTP e che l’informazione da trasferire occupi un
bel po’ di spazio. Il problema è stato affrontato già da più di una ventina di anni fa, creando
dei sistemi di compressione delle informazioni. Tali sistemi sono in grado di comprimere le
informazioni presenti in un file, riducendole, ma senza perderne alcuna. Questo è possibile
grazie ad algoritmi di predizione: man mano che il ontenuto di un file viene letto, l’algoritmo
di predizione tenta di indovinare i byte successivi a quelli letti e più l’algoritmo
riesce ad indovinare i byte successivi, più le informazioni risultano compresse, in
quanto ricostruibili automaticamente dall’algoritmo di predizione al momento della
decompressione. Infatti, le informazioni ricostruibili dall’algoritmo di predizione non devono
essere trasmesse poiché possono essere ricostruite in automatico. Grazie a questi
meccanismi è possibile produrre versioni compresse di file che arrivano ad occupare uno
spazione anche soltanto del 10% di quello ocupato dal file originale (non compresso). È
comunque ovvio che per poter rileggere le informazioni è necessario decomprimere il file
compresso.
Uno dei primi software per la compressione di informazioni è stato ARC, che venne
rimpiazzato verso la fine degli anni ’80 da PKZIP, un algoritmo molto efficiente ideato da Phil
Katz, che è stato uno tra i più utilizzati nel corso degli anni.
In GNU/Linux possono essere utilizzati vari algoritmi di compressione delle informazioni
come zip, gzip, bzip2.
__________________________________________________________________________________________________________
Comando: gzip
Path: /???/gzip
SINTASSI
$ gzip [option] [filename ...]
DESCRIZIONE
-
option è l’insieme delle opzioni che modificano il comportamento di mkdir. Può assumere
i seguenti valori:
-
-a | --ascii
effettua la conversione del carattere di fine riga utilizzando le
convenzioni locali (per i sistemi non Unix-like - ad es. per MSDOS, la
sequenza CR LF viene convertita in LF e quindi compressa, Quando
poi viene decompressa, viene riconvertita da LF a CR LF);
-
-c | --stdout | --to-stdout
indica di reindirizzare l’output sullo standard output;
-
-d | --decompress | --uncompress
indica di effettuare l’operazione di decompressione (invece della
compressione);
-
-f | --force
indica di forzare l’operazione di compressione/decompressione anche
se il file ha più link o il file corrispondente esiste già;
-
filename specifica il nome del/dei file sui quali operare;
______________________________
Per la compressione, gzip utilizza la codifica Lempel-Ziv (LZ77) e produce un file
compresso con estenzione .gz.
[da completare ...]