tar может создавать архивы в разных форматах. GNU tar, ustar, pax, v7. Что лучше всего подходит для длительного архивирования? Есть ли существенные различия в этих форматах?
Я бы использовал лучший формат для обычных резервных копий, и я не хочу, чтобы я мог извлечь данные из-за проблем с форматированием. (например, v7 исчез из реализации)
В руководстве по GNU tar есть целый раздел, посвященный форматы архивов tar. Форматы ustar
и pax
основаны на стандартах POSIX, и gnu
очень распространен. Я бы держался подальше от других.
Я предлагаю выбрать pax
, то есть POSIX.1-2001. GNU tar сделает его стандартным в будущем и даже старым ustar
реализации могут распаковать его. Это также наименее ограничивающий формат.
Вы можете создать POSIX.1-2001 архивы например с GNU tar, указав --format pax
или с отдельным pax архиватор.
Некоторые технические сравнения среди v7
, ustar
и pax
форматы:
Формат до POSIX.1-1988.
'\0'
), каталог, жесткая ссылка (typeflag 1
), символическая ссылка (typeflag 2
). Каталог обозначается конечной косой чертой в название поле. ссылка 1ustar расширяет блок заголовка из формата v7, и в несжатом виде размер tar-архива ustar идентичен тарболу v7. Нет большой причины отдавать предпочтение формату v7, если только вы намеренно не удаляете информацию, которую ustar будет архивировать.
'\0'
или 0
), каталог (отмечен флагом типа 5
), жесткая ссылка, символическая ссылка, символьное устройство (3
), блочное устройство (4
), FIFO (6
). (Расширения поставщика для типов файлов разрешены в A
через Z
.)ustar имеет незначительные, обратно несовместимые отличия от предстандартного формата v7 - флаги типа 0
и 5
для обычных файлов и каталогов соответственно. В v7 typeflag поле, используемое для указания ссылки только, а не другие типы файлов.
pax расширяет формат ustar с помощью (необязательных) блоков расширенных заголовков, эти расширенные заголовки будут выглядеть как обычные текстовые файлы при извлечении через старые программы tar. Расширенные заголовки идентифицируются внутри с помощью флагов типа. x
(расширенный заголовок файла) и g
(глобальный расширенный заголовок). Их неограниченная расширяемость также означает, что tarball pax обычно больше, чем ustar. Это хорошо для архивирования, но немного громоздко для формата распространения программного обеспечения.
pax - это надмножество формата ustar - tarball pax ничем не отличается от ustar, если все его расширенные заголовки удалены.
Ты можешь читать этот для того, что можно расширить в формате pax. Но в целом по сравнению с устаром:
path=
ключевое слово в расширенном заголовке).linkpath=
ключевое слово)size
(размер файла), uid
(Логин пользователя), uname
(имя пользователя), gid
(идентификатор группы), gname
(имя группы), все можно расширять до неограниченной длины.path
, linkpath
, uname
и gname
.atime
) можно сохранить вместе со временем модификации (mtime
).Примечание. POSIX не предписывает шаблон имени файла для хранения расширенных заголовков, поэтому реализации могут создавать любой шаблон имени по своему усмотрению. В GNU tar, например, шаблон имени управляется через --pax-option=exthdr.name=
вариант. Если вы планируете создать детерминированный архив (среди tar
/pax
реализации), остерегайтесь этого.
В соответствии с Руководство по GNU tar, GNU tar был основан на раннем проекте POSIX.1 ustar
стандарт. Но расширения GNU для tar
делает это несовместимым с ustar
формат. Если вы хотите сделать переносимый архив, вам следует избегать формата tar GNU и пользу pax
или ustar
вместо.
Формат tar GNU может быть идентифицирован с магия поле (8 байт) из ustar<space><space><nul>
, по сравнению с устарским магия и версия поля ustar<nul>00
.
Тем не менее, формат GNU tar обратно совместим с форматом v7.
ustar
который использует префикс поле для расширения пути, GNU tar сохраняет длинное имя файла в расширенном заголовке (не pax), который имеет флаг типа L
. Точно так же цели ссылки расширяются через расширенный заголовок с флагом типа. K
.D
). См. GNU tar --incremental
вариант.M
). См. GNU tar --multi-volume
вариант.S
).V
) или метку для тома архива. См. GNU tar --label
вариант.oldgnu
(GNU tar <= 1.12) и gnu
(GNU tar> = 1.13.12) форматы второстепенны для конечных пользователей, но согласно руководство и create.c и НОВОСТИ от исходного кода есть как минимум два отличия: oldgnu
format всегда завершает имена файлов строк, имена пользователей и имена групп нулевыми байтами. (Это означает, что до использования расширенного заголовка имена файлов содержат не более 99 символов.)tar.gz - довольно стандартный.
tar архивирует все файлы в один файл, например .iso, но не сжимает их.
gzip (gz) сжимает файлы tar.
Командная строка * nix для выполнения этого:
tar -pczf name-of-new-archive.tar.gz /path/of/the/directory
pax совместим с POSIX ... Как уже было сказано, я только используйте tar, tar + gz и tar + bz2