J'utilise GNU tar. Il peut détecter automatiquement le type de compression lors de la compression / décompression de fichiers. Mais j'ai besoin de décompresser une archive de stdin et le type de compression est inconnu. J'ai remarqué que le goudron peut me donner des suggestions correctes comme:
tar: Archive is compressed. Use -z option
Mais je veux que tar utilise automatiquement cette option de compression sans me demander de saisir cet argument. Comment puis je faire ça? Pourquoi ne pas simplement décompresser tar car il connaît déjà le type de compression?
Je vous remercie!
tarne sait pas sur quel type de données il se trouve stdinjusqu'à ce qu'il le lise et qu'il soit alors trop tard pour appeler le programme de décompression. Il prend en charge gzip, bzip2 et autres. Il n'est pas facile de contourner ce problème (il faudrait mettre les données en mémoire tampon), donc il vous dit simplement de réessayer.
fork()/ exec()pour diriger les données via un utilitaire de décompression. L'utilitaire lirait à partir du stdintuyau et le premier 4K serait désormais manquant. Il n'y a aucun moyen de remettre les données dans le tuyau après les avoir lues.
cat buffer - | gunzip. (Alternativement, des E / S non bloquantes pourraient être utilisées pour éviter la nécessité d'un processus supplémentaire.)