Tabella 8-2. Comandi di archiviazione, compressione e conversione di file
Comando/Sintassi | Cosa fa |
---|---|
compress/uncompress/zcat [opzioni] file[.Z] | comprime o decomprime un file. I file compressi sono memorizzati con l'estensione .Z |
dd [if=infile] [of=outfile] [operando=valore] | copia un file, converte tra ASCII e EBCDIC o scambia l'ordine dei byte, come specificato |
gzip/gunzip/zcat [opzioni] file[.gz] | comprime o decomprime un file. I file compressi sono memorizzati con l'estensione .gz |
od [opzioni] file | effettua un dump di un file binario in ottale, in ASCII, in esadecimale, in decimale o in modo carattere. |
tar [opzioni] [file] | archivio a nastro - riferirsi alle pagine man per i dettagli su come creare, visualizzare ed estrarre un archivio di file. I file tar possono essere memorizzati su nastro o su disco. |
uudecode [file] | decodifica un file uuencoded, ricreando il file originale |
uuencode [file] nuovo_nome | codifica un file binario in ASCII 7-bit; utile quando lo si invia tramite email, per poi essere decodificato come nuovo_nome alla destinazione |
Il comando compress(1) viene usato per ridurre lo spazio di disco utilizzato da un file. Quando un file è stato compresso usando il comando compress(1), il suffisso .Z viene appeso al nome del file. I permessi, la data di accesso e di modifica del file originale vengono preservati. Il comando uncompress(1) restituisce il file originale compresso con compress(1).
Sintassi
compress [opzioni] [file]
uncompress [opzioni] [file.Z]
zcat [file.Z]
Opzioni generali
-c |
scrive su standard output e non crea o modifica alcun file |
-f |
forza la compressione del file, anche se questa non riduce la dimensione del file o se il file destinazione (file.Z) esiste già. |
-v |
verbose. Riporta la percentuale di riduzione del file. |
zcat(1) scrive su standard output. Equivale a uncompress -c.
Esempi:
Dati i file:
96 -rw-r--r-- 1 lindadb acs 45452 Apr 24 09:13 logins.beauty 184 -rw-r--r-- 1 lindadb acs 90957 Apr 24 09:13 logins.bottom 152 -rw-r--r-- 1 lindadb acs 75218 Apr 24 09:13 logins.photon 168 -rw-r--r-- 1 lindadb acs 85970 Apr 24 09:13 logins.top
Questi possono essere compressi con:
% compress logins.*
che crea i file:
24 -rw-r--r-- 1 lindadb acs 8486 Apr 24 09:13 logins.beauty.Z 40 -rw-r--r-- 1 lindadb acs 16407 Apr 24 09:13 logins.bottom.Z 24 -rw-r--r-- 1 lindadb acs 10909 Apr 24 09:13 logins.photon.Z 32 -rw-r--r-- 1 lindadb acs 16049 Apr 24 09:13 logins.top.Z
I file originali sono persi.
Per visualizzare un file compresso, viene usato il comando zcat(1):
% zcat logins.beauty.Z | head beauty:01/22/94:#total logins,4338:#different UIDs,2290 beauty:01/23/94:#total logins,1864:#different UIDs,1074 beauty:01/24/94:#total logins,2317:#different UIDs,1242 beauty:01/25/94:#total logins,3673:#different UIDs,2215 beauty:01/26/94:#total logins,3532:#different UIDs,2216 beauty:01/27/94:#total logins,3096:#different UIDs,1984 beauty:01/28/94:#total logins,3724:#different UIDs,2212 beauty:01/29/94:#total logins,3460:#different UIDs,2161 beauty:01/30/94:#total logins,1408:#different UIDs,922 beauty:01/31/94:#total logins,2175:#different UIDs,1194
Una visualizzazione del file utilizzando un altro comando al posto di zcat(1) può produrre un difficile risultato binario.
Il comando uncompress(1) viene usato per far ritornare il file compresso nel suo formato originale:
% uncompress logins.*.Z ; ls -als logins.* 96 -rw-r--r-- 1 lindadb acs 45452 Apr 24 09:13 logins.beauty 184 -rw-r--r-- 1 lindadb acs 90957 Apr 24 09:13 logins.bottom 152 -rw-r--r-- 1 lindadb acs 75218 Apr 24 09:13 logins.photon 168 -rw-r--r-- 1 lindadb acs 85970 Apr 24 09:13 logins.top
In aggiunta alle utility standard di Unix compress(1), uncompress(1), zcat(1) ci sono un set di utility GNU liberamente disponibili. Queste creano persino un miglior lavoro di compressione utilizzando un algoritmo più efficiente. I programmi GNU che forniscono funzionalità simili ai precedenti sono spesso installati rispettivamente come gzip(1), gunzip(1) e zcat(1). I nomi dei file compressi con gzip(1) hanno l'estensione .z o .gz. Il software GNU può essere ottenuto via ftp anonimo: ftp://ftp.gnu.org/pub/gnu.
Il comando tar(1) raggruppa file in un dispositivo o in un file per scopi di archiviazione. Il comando tar(1) non comprime i file, rende solamente più maneggevole una grande quantità di file.
Sintassi
tar [opzioni] [directory file]
Opzioni generali
c |
crea un archivio (inizia scrivendo all'inizio del file) |
t |
visualizza il contenuto |
x |
estrae da un archivio |
v |
verbose |
f |
nome del file di archivio |
b |
dimensione del blocco di archivio |
tar(1), in generale, accetta le sue opzioni sia facendole precedere da un trattino (-) sia senza trattino. Il file di archivio può essere un file su disco, un dispositivo a nastro o standard input/output. L'ultimo modo viene rappresentato tramite un trattino.
Esempi:
Dati i file di dimensioni seguenti:
45 logs.beauty 89 logs.bottom 74 logs.photon 84 logs.top
tar(1) può combinare questi in un solo file, logfile.tar:
% tar -cf logfile.tar logs.* ; ls -s logfile.tar 304 logfile.tar
In Internet, molti siti di archivio FTP anonimi memorizzano i loro pacchetti in formati tar compressi, quindi i file finiscono in .tar.Z o .tar.gz. Per estrarre i file da uno di questi file archivio si può prima decomprimerlo, o usare l'appropriato comando zcat(1) e mandare in pipe il risultato a tar(1), esempio:
% zcat archive.tar.Z | tar -xvf -
dove il trattino alla fine del comando tar(1) indica che il file è preso da stdin(4).
Per codificare un file binario in ASCII 7-bit si usa il comando uuencode(1). Per decodificare il file ASCII 7-bit in binario si usa il comando uudecode(1). Il suffisso “uu” nei nomi deriva dal fatto che questi comandi fanno parte del set di comandi Unix-to-Unix CoPy (UUCP). I comandi uuencode(1) e uudecode(1) sono generalmente usati quando si mandano file binari via e-mail. Con l'e-mail non c'è garanzia che file binari 8-bit siano trasferiti correttamente. Quindi per garantire una corretta consegna si può codificare il file binario, sia direttamente su linea di comando, includendo il file codificato, sia indirettamente, lasciando al proprio programma di posta MIME questo lavoro. In modo simile, l'utente decodifica il file ricevuto.
Sintassi
uuencode [file_sorgente] pathname_per_uudecode [> nuovo_file]
uudecode [-p] file_uuencode
Opzioni generali
Esempi:
La prima linea di un file codificato con uuencode(1) include i permessi e il nome del file originale che uudecode(1) utilizzerà quando decodificherà il file codificato. Il file inizia e finisce rispettivamente con le parole chiavi begin e end, esempio:
begin 555 binary_filename M?T5,1@$" 0 " ( ! %"W #0 5"< T " M!0 H !4 % 8 T $ - "@ H 4 P M -0 !$ ! ! ! %" M%P !0A< % $ $ 4(8 -"& W& W% < 0 M @ !0B T(@ )@ !P O=7-R+VQI8B]L9"YS M;RXQ ?< 'Y VP "O !VP )8 &6 !G0 M %[ U0 %G !3 ;< #Q %Q ! MEP :P !_ '@ !PP (P M N0 =H _0 $D Y < #F /L M01 $' $ & ! P #0A@ 4(8 M" ! 0 !E !@ , T(@ %"( )@ $ M 0 ( ;@ $ ' -"N !0K@ /H M $ # ', ! P #1J 4:@ #8 ! M !Y 0 , TH %* !=X 0 M@ @ # -/X !3^ "E, $ (4 ! M 4_> )0 0 ". P ; %0 P )@ $ end
Il comando dd(1) permette di copiare dati da dispositivi grezzi, come dischi o nastri, specificando la dimensione dei blocchi di input e di output. dd(1) era originariamente conosciuto come il programma di copia disco-a-disco. Inoltre con dd(1) si possono convertire file in differenti formati, per esempio da EBCDIC a ASCII, cambiare l'ordine dei byte, ecc.
Sintassi
dd [if=dispositivo_input] [of=dispositivo_output] [operando=valore]
Opzioni generali
if=dispositivo_input |
il dispositivo o file di input |
of=dispositivo_output |
il dispositivo o file di output |
Se i dispositivi di input o di output non sono specificati, si assume come default rispettivamente lo standard input e lo standard output.
Gli operandi possono essere:
ibs=n |
dimensione del blocco di input (blocchi da 512 byte di default) |
obs=n |
dimensione del blocco di output (blocchi da 512 byte di default) |
bs=n |
setta entrambe le dimensioni dei blocchi di input e di output |
files=n |
copia n file di input |
skip=n |
salta n blocchi di input prima di iniziare la copia |
count=n |
copia solamente n blocchi di input |
conv=valore[,valore] |
dove valore può essere: |
ascii |
converte da EBCDIC a ASCII |
ebcdic |
converte da ASCII a EBCDIC |
lcase |
converte i caratteri maiuscoli in minuscoli |
ucase |
converte i caratteri minuscoli in maiuscoli |
swab |
scambia ogni coppia di byte dei dati di input |
noerror |
non ferma il processo su un errore in input |
sync |
riempie ogni blocco di input alla dimensione di ibs ,
apporrendo byte nulli se necessario |
La dimensione dei blocchi viene specificata in byte e può finire in k, b o w per indicare rispettivamente 1024 (kilo), 512 (blocco) o 2 (parola) byte.
Esempi:
Per copiare un file da un dispositivo a nastro in un altro:
% dd if=/dev/rmt/0 of=/dev/rmt/1 20+0 records in 20+0 records out
Per copiare file posti in un dispositivo a nastro, scritti su una macchina big endian con una dimensione di 20 blocchi, in file su una machina little endian che ha un nastro inserito nel suo dispositivo, si ha la necessità di scambiare le coppie di byte, in questo modo:
% dd if=/dev/rmt/0 of=new_file ibs=20b conv=swab 1072+0 records in 21440+0 records out
A completamento dell'operazione, dd(1) riporta il numero dei blocchi totali e dei blocchi parziali per entrambi i file di input e di output.
Il comando od(1) effettua un dump di un file su stdout(4) in differenti formati, incluso l'ottale, il decimale, virgola mobile, esadecimale e formato carattere.
Sintassi
od [opzioni] file
Opzioni generali
-b |
dump ottale |
-d |-D |
dump decimale (-d) o decimale esteso (-D) |
-s |-S |
dump decimale marcato (-s) o decimale marcato esteso (-S) |
-f |-F |
dump in virgola mobile (-f) o virgola mobile estesa (double) (-F) |
-x |-X |
dump esadecimale (-x) o esadecimale esteso (-X) |
-c |-C |
dump in formato carattere (byte singolo) o carattere esteso (carattere singolo o multi-byte, a seconda dai settaggi locali) |
-v |
modalità verbose |
Esempi:
Per dare un'occhiata all'attuale contenuto del seguente file, un elenco di romanzi di Wodehouse Lord Emsworth:
Something Fresh [1915] Uncle Dynamite [1948] Leave it to Psmith [1923] Pigs Have Wings [1952] Summer Lightning [1929] Cocktail Time [1958] Heavy Weather [1933] Service with a Smile [1961] Blandings Castle and Elsewhere [1935] Galahad at Blandings [1965] Uncle Fred in the Springtime [1939] A Pelican at Blandings [1969] Full Moon [1947] Sunset at Blandings [1977]
si può usare:
% od -c wodehouse 0000000 S o m e t h i n g F r e s h 0000020 [ 1 9 1 5 ] \t U n c l e D y n 0000040 a m i t e [ 1 9 4 8 ] \n L e a 0000060 v e i t t o P s m i t h 0000100 [ 1 9 2 3 ] \t P i g s H a v e 0000120 W i n g s [ 1 9 5 2 ] \n S u 0000140 m m e r L i g h t n i n g [ 0000160 1 9 2 9 ] \t C o c k t a i l T 0000200 i m e [ 1 9 5 8 ] \n H e a v y 0000220 W e a t h e r [ 1 9 3 3 ] \t 0000240 S e r v i c e w i t h a S 0000260 m i l e [ 1 9 6 1 ] \n B l a n 0000300 d i n g s C a s t l e a n d 0000320 E l s e w h e r e [ 1 9 3 5 0000340 ] \t G a l a h a d a t B l a 0000360 n d i n g s [ 1 9 6 5 ] \n U n 0000400 c l e F r e d i n t h e 0000420 S p r i n g t i m e [ 1 9 3 9 0000440 ] \t A P e l i c a n a t B 0000460 l a n d i n g s [ 1 9 6 9 ] \n 0000500 F u l l M o o n [ 1 9 4 7 ] 0000520 \t S u n s e t a t B l a n d 0000540 i n g s [ 1 9 7 7 ] \n 0000554
Questo, ed altri documenti, possono essere scaricati da ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
Per domande su FreeBSD, leggi la documentazione prima di contattare <[email protected]>.
Per domande su questa documentazione, invia una e-mail a <[email protected]>.