Uso GNU tar. Può rilevare automaticamente il tipo di compressione durante la compressione / decompressione dei file. Ma devo decomprimere un archivio da stdin e il tipo di compressione non è noto. Ho notato che tar può darmi suggerimenti corretti come:
tar: Archive is compressed. Use -z option
Ma voglio che Tar usi automaticamente quell'opzione di compressione senza chiedermi di inserire quell'argomento. Come posso fare ciò? Perché non tar semplicemente decomprimere poiché conosce già il tipo di compressione?
Grazie!
tar
non sa quale tipo di dati ha stdin
fino a quando non lo legge, e ormai è troppo tardi per chiamare il programma decompresso. Supporta gzip, bzip2 e altri. Risolvere questo problema non è facile (dovrebbe bufferizzare i dati), quindi ti dice solo di riprovare.
fork()
/ semplice exec()
per reindirizzare i dati attraverso un'utilità di decompressione. L'utilità leggeva dalla stdin
pipe e ora mancava il primo 4K. Non è possibile rimettere i dati nella pipe dopo averli letti.
cat buffer - | gunzip
. (In alternativa, è possibile utilizzare l'I / O non bloccante per evitare la necessità di un processo aggiuntivo.)