2016-06-02 4 views
1

В Linux, как я могу определить формат, который использовался для создания заданного tarball?Как определить формат tar-архива

Я хотел бы, чтобы обнаружить, был ли данный архив, созданный с использованием или POSIX Gnu формат.

Я уже прочитал man page for GNU tar, в котором объясняется, как управлять форматом во время создания. Однако я не вижу ничего о том, как просматривать формат существующего файла.

+0

Также предлагается здесь: http://superuser.com/questions/759006/how-to-find-tar-format-of-archive, который предлагает 7zip для Windows для проверки. – rrauenza

ответ

3

Вы можете использовать file под Linux, чтобы посмотреть на отпечатки пальцев несжатого архива (файл не будет вглядываться за слоем сжатия, так что распаковывать его первый):

$ tar --format=posix -cf posix.tar foo  # create test posix archive 
$ tar --format=gnu -cf gnu.tar foo  # create test gnu archive 
$ file gnu.tar posix.tar 
gnu.tar: POSIX tar archive (GNU) 
posix.tar: POSIX tar archive 

Если архив сжат, распаковывать сначала:

$ tar --format=posix -czf posix.tar.gz foo # create test gzip posix archive 
$ tar --format=gnu -czf gnu.tar.gz foo # create test gzip gnu archive 
$ gunzip posix.tar.gz 
$ gunzip gnu.tar.gz 
$ file gnu.tar posix.tar 
gnu.tar: POSIX tar archive (GNU) 
posix.tar: POSIX tar archive 

GNU основан на более раннем формате POSIX, поэтому он говорит, что он оба.

Для подробных подробностей, формат описан в руководстве по GNU tar here и более подробно here.

+0

Да, я как раз собирался ответить на свой вопрос. Проблема была в том, что 'файл' был бесполезен, если архив был сжат. Поэтому мне пришлось сначала распаковать его. Спасибо за быстрый ответ! Если вы обновите ответ, чтобы заметить, что сначала необходимо распаковать архив, я соглашусь с ним как на решение. – Christopher

+0

@christopher Done, спасибо! – rrauenza

+0

Я сделал редактирование, чтобы развернуть немного больше. Благодарим вас за полезный ответ. – Christopher

Смежные вопросы