Come posso creare un catrame compresso in sun solaris?


11

Ho effettuato l'accesso al sistema operativo Sun Solaris. Voglio creare ed estrarre un file tar compresso. Ho provato questo normale comando UNIX:

tar -cvzf file.tar.gz directory1

Non viene eseguito nel sistema operativo Sun con il seguente errore

bash-3.2$ tar -cvzf file.tar.tz directory1
tar: z: unknown function modifier
Usage: tar {c|r|t|u|x}[BDeEFhilmnopPqTvw@[0-7]][bfk][X...] [blocksize] [tarfile] [size] [exclude-file...] {file | -I include-file | -C directory file}...

2
Perché pensi che sia un normale comando UNIX?
schaiba,

Penso che dovresti dedicare un po 'di tempo a leggere le differenze tra Unixes Linux e GNU.
Coteyr,

4
Quando hanno aggiunto quella zbandiera al catrame GNU, abbiamo perso il nostro più grande esempio per insegnare alle persone come pensare logicamente e costruire una pipeline ...

Risposte:


27

Per evitare la creazione di file intermedi temporanei è possibile utilizzare questo comando

tar cvf - directory1|gzip -c >file.tar.gz

2
Ciò ha il potenziale vantaggio che parte dell'elaborazione può avvenire in parallelo.
psmears,

È f -necessario o Solaris esegue l' taroutput su stdout per impostazione predefinita?
Segna il

2
@Mark: Secondo la pagina man , "Se fomesso, tarutilizzerà il dispositivo indicato dalla TAPEvariabile d'ambiente, se impostato; in caso contrario, utilizzerà i valori predefiniti definiti in /etc/default/tar." Quindi no, non sembra che si possa presumere che f -non sia necessario.
Ilmari Karonen,

@Romeo: grazie per la risposta, l'ho trovato utile. Puoi chiarire perché "-" è necessario tra cvf e il nome della directory? Inoltre, ho provato il tuo comando su diversi sistemi operativi - Solaris 10, 11.4, Linux (RHEL, CentOS, Oracle, ecc.) E funziona in modo coerente. Ho anche rivisto le rispettive pagine man tar - perché il sopra funziona in Linux senza "-" prima del cvf? Mi aspetto che Linux richieda qualcosa come "tar -cvf ...." Grazie ancora per la risposta.
rc1,

@ rc1, il trattino in tar significa che hai impostato il file di output su STDOUT. Esistono due stili di parametri, BSD e SYSV. E Linux tar funziona con entrambi (con e senza trattino prima del cvf)
Romeo Ninov,

10

Sembra che Solaris tarnon sappia comprimere. Quindi basta farlo manualmente:

tar -cvf file.tar directory1 && gzip file.tar

Questo è tutto lo -zswitch di GNU tar, comunque. Il comando sopra produrrà file.tar.gz.


Funzionerà (purché si disponga di spazio su disco sufficiente per memorizzare l' file.tararchivio intermedio non compresso ), ma è inutilmente lento e dispendioso di spazio su disco. Non riesco a pensare a nessuna situazione in cui questo sarebbe preferibile alla risposta di Romeo Ninov .
Ilmari Karonen,

1
@IlmariKaronen nemmeno io. Ci ho pensato prima.
terdon

2

Controlla se hai SUNWgtarinstallato. Questa è la versione GNU di tare fornisce /usr/sfw/bin/gtarche consentirà l'utilizzo delle opzioni GNU per tar.


-1

Si prega di provare sotto il comando

tar -cvf file.tar directory1 && gzip file.tar

(per comprimere il file su Solaris)

gunzip file.tar.gz

(per decomprimere)


1
Questo non aggiunge un sacco di cose oltre una risposta precedente
Jeff Schaller

Scarica anche l'intero file tar (incluso tutto il file binario nelle intestazioni) sul terminale, invece di annullare l'archiviazione dei file. Probabilmente dovrai ripristinare il terminale in seguito.
Paul_Pedant,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.