Вопрос: Какой формат файла tar следует использовать?


tar может создавать архив в разных форматах. GNU tar, ustar, pax, v7. Что было бы лучше всего для долговременного архивирования? Существуют ли существенные различия в этих форматах?

Я бы использовал лучший формат для общих резервных копий, и я не хочу, чтобы, может быть, я мог извлечь данные, потому что проблемы с форматом. (v7, например, исчезает из реализации)


7
2018-03-22 20:43


Источник




Ответы:


В руководстве GNU tar имеется целая секция, предназначенная для форматы архива tar, Форматы ustar а также pax основаны на стандартах POSIX и gnu очень распространена. Я бы избежал других.

Мое предложение было бы выбрать pax, то есть POSIX.1-2001, GNU tar делает его дефолтом в будущем и даже старым ustar реализация может распаковать его. Это также наименее ограничивающий формат.

Вы можете создать POSIX.1-2001 архивы, например. с GNU tar, указав --format pax или с отдельным архиватор pax,


6
2018-03-22 22:31





Некоторые технические сравнения между v7, ustar а также pax форматы:

v7

Формат перед POSIX.1-1988.

  • Максимальная длина имени файла - 99 символов. (100 байтов минус завершающий нулевой байт).
  • Максимальная длина ссылки - 99 символов.
  • Разрешены типы файлов: обычный файл (typeflag '\0'), каталог, жесткая ссылка (typeflag 1), символическая ссылка (typeflag 2). Каталог идентифицируется конечной косой чертой в имя поле. ссылка 1
  • Максимальный размер файла: 8589934591 байт (8 GiB - 1).
  • Сохраняет числовой идентификатор пользователя и идентификаторы групп. Не сохраняет имена пользователей и групп. Максимальный UID и GID - 2097151 (октал 7777777).
  • Время модификации магазинов. Максимальная временная метка, разрешенная в формате 2242-03-16 12:56:31 UTC (8589934591 секунд с эпохи), однако tar-ридеры могут не распознать их из-за проблема 2038 года присутствует в 32-битных системах.

USTAR

ustar расширяет блок заголовка из формата v7, и, когда он несжатый, размер tar-файла для ustar идентичен файлу v7. Нет большой причины предпочитать формат v7, если вы не намеренно зачищаете информацию, которую архив будет архивировать.

  • Максимальная длина имени файла - 256 символов ASCII если путь может быть отлично разделен на 155 байт префикс, косой чертой и 100 байт имя частей. ustar предоставляет дополнительные префикс поле для хранения дополнительных компонентов пути, но поля должны быть разделены на разделители каталогов, поэтому вам не разрешено иметь имя файла длиной более 100 байт или имя каталога длиной более 155 байт.
  • Максимальная длина ссылки - 100 символов. (1.e больше не требует завершения нулевого байта.)
  • Разрешены типы файлов: обычный файл (typeflag '\0' или 0), каталог (помечен звездочкой 5), жесткая ссылка, символическая ссылка, символьное устройство (3), блочное устройство (4), FIFO (6). (Расширения поставщика по типам файлов разрешены в Aчерез Z.)
  • максимальная главный а также незначительный номерами для файлов устройств являются 2097151 (октал 7777777).
  • Сохраняет имена пользователей и групп, а также UID и GID. Имена пользователей и групп указаны в ASCII и 32 символа максимум.
  • Ограничение размера файла, лимиты UID / GID и лимит времени остаются такими же, как формат v7.

чел

pax расширяет формат ustar, хотя (дополнительно) Extended Blocker, эти расширенные заголовки будут выглядеть как обычные текстовые файлы при извлечении, хотя старые tar-программы. Расширенные заголовки идентифицируются внутри с помощью флагов типа x (расширенный заголовок файла) и g (глобальный расширенный заголовок). Их неограниченная расширяемость также означает, что pax tarball обычно будет больше, чем ustar. Это хорошо для архивирования, но немного раздумий для формата распространения программного обеспечения.

Если бы все его Расширенные Заголовки были удалены, тарбол pax стал бы устарелым.

Ты можешь читать это для чего может быть расширен в формате pax. Но по сравнению с ustar в резюме:

  • Имена файлов и имена путей могут быть неограниченной длиной (через path= ключевое слово в расширенном заголовке).
  • Цели ссылок могут быть неограниченной длиной (linkpath= ключевое слово)
  • size (размер файла), uid (Идентификатор пользователя), uname (имя пользователя), gid (идентификатор группы), gname (название группы), являются расширяемыми до неограниченной длины.
  • Кодировка UTF-8 для path, linkpath, uname а также gname,
  • Временные метки позволяют выполнять подсекундную точность и потенциально неограниченную длину, но по-прежнему не может хранить секунды прыжка (пока) из-за его формата как «количество секунд с эпохи», Фракции секунд десятичны.
  • Время доступа к файлу (atime) могут храниться вместе с временем модификации (mtime).

Примечание. POSIX не задает шаблон имени файла для хранения расширенных заголовков, поэтому реализации могут создавать любые шаблоны имен, которые они хотят. Например, в GNU tar шаблон имени управляется через --pax-option=exthdr.name= вариант, Если вы планируете создать детерминированный tarball (среди tar/pax реализации), остерегайтесь этого.

форматы gnu и oldgnu

В соответствии с Руководство GNU tar, GNU tar был основан на раннем проекте POSIX.1 ustar стандарт. Но расширения GNU для tar делает его несовместимым с ustar формат. Если вы хотите сделать переносной архив, вы должны pax а также ustar а также избегать формата GNU tar по возможности,

Формат GNU tar может быть идентифицирован с помощью магия поле (8 байт) ustar<space><space><nul>, по сравнению с магия а также версия поля ustar<nul>00,

Формат GNU tar обратно совместим с форматом v7.

  • GNU tar имеет неограниченную длину для имен файлов и целевых ссылок. В отличие от ustar который использует префикс поле для расширения пути, GNU tar хранит длинное имя файла в расширенном заголовке (non-pax), который имеет typeflag L, Аналогично, цели ссылок расширены, хотя расширенный заголовок с типомflag K,
  • Формат tar GNU хранит atime (время доступа) и ctime (время изменения статуса) в дополнительных полях заголовка вместе с mtime, который уже доступен в формате v7.
  • Формат GNU tar поддерживает дополнительные типы файлов по сравнению с ustar (ссылка 2):
    • Каталог в инкрементном резервном копировании ("DUMPDIR", typeflag D). См. GNU tar --incremental вариант.
    • Продолжение файловых данных для многотомного архива (typeflag M). См. GNU tar --multi-volume вариант.
    • Разреженный файл (typeflag S).
    • Заголовок тома (typeflag V) или ярлык для объема архива. См. GNU tar --label вариант.
  • Разница между oldgnu (GNU tar <= 1.12) и gnu (GNU tar> = 1.13.12) форматы являются незначительными для конечных пользователей, но согласно руководство а также create.c а также НОВОСТИ из исходного кода есть как минимум две отличия:
    • oldgnu формат всегда будет прервать имена файлов строк, имена пользователей и имена групп с нулевыми байтами. (Это означает, что имена файлов имеют не более 99 символов перед использованием расширенного заголовка.)
    • GNU 1.13.12 и более поздние могут пытаться «сжать» UID, GID, время изменения, devmajor а также devminor поля, выводя их в подписанные бинарные числа big-endian, если они слишком велики, будут представлены в восьмеричном ASCII в полях. Это увеличивает максимальный предел UID и GID до [-2 ^ 56, 2 ^ 56-1], а основные и младшие номера устройств - [-2 ^ 56, 2 ^ 56-1]. (Представления в исходном коде резервируют несколько бит для предотвращения столкновений с представлением ASCII.)

1
2018-03-22 20:45



Секунды секунд не имеют значения «количество секунд с эпохи». - Michael Hampton♦


pax совместим с POSIX ... Это было сказано, я только используйте tar, tar + gz и tar + bz2


0
2018-03-22 21:42





tar.gz является довольно стандартным.

tar архивирует все файлы в один файл, например .iso, но он не сжимает их.

gzip (gz) сжимает tar-файлы.

Командная строка * nix для этого:

tar -pczf name-of-new-archive.tar.gz /path/of/the/directory

0



tar -zcvf name-of-new-archive.tar.gz /path/of/the/directory - JeffG
для целей резервного копирования (как указано в Q), мы обычно используем -p для разрешения сохранения разрешения. вы упомянули не обязательно, но хороши для ведения журналов в автоматизированных процессах. - Hyppy
@hyppy tar всегда сохраняет разрешения в своем архиве. -P используется для извлечения, чтобы сохранить их при воссоздании файлов. - penguin359