Anton Dolin

tar — утилита для сбора множества файлов в один архивный файл, часто называемый tarball, для распространения или резервного копирования. Название происходит от «tape archive» (ленточный архив), поскольку изначально он был разработан для записи данных на последовательные устройства ввода-вывода, не имеющие собственной файловой системы, такие как устройства, использующие магнитную ленту. Архивные наборы данных, созданные tar, содержат различные параметры файловой системы, такие как имя, временные метки, владелец, права доступа к файлам и структура каталогов. POSIX отказался от tar в пользу pax, но tar по-прежнему широко используется.

История

Утилита командной строки была впервые представлена в Version 7 Unix в январе 1979 года, заменив программу tp (которая, в свою очередь, заменила "tap")[2]. Структура файла для хранения этой информации была стандартизирована в POSIX.1-1988[3] а затем в POSIX.1-2001[4], и стала форматом, поддерживаемым большинством современных систем архивирования файлов. Команда tar была исключена из POSIX.1-2001 в пользу команды pax, которая должна была поддерживать формат файла ustar; команда tar была указана для исключения в пользу команды pax, по крайней мере, с 1994 года.

Сегодня Unix-подобные операционные системы обычно включают инструменты для поддержки файлов tar, а также утилиты, обычно используемые для их сжатия, такие как xz, gzip и bzip2.

Команда tar также была портирована на операционную систему IBM i[5].

BSD-tar включен в Microsoft Windows начиная с Windows 10 April 2018 Update[6][7], в противном случае существует несколько сторонних инструментов, доступных для чтения и записи этих форматов в Windows.

Обоснование

Многие исторические накопители на магнитной ленте считывают и записывают блоки данных переменной длины, оставляя значительное неиспользуемое пространство на ленте между блоками (для физического запуска и остановки движения ленты). Некоторые накопители на магнитной ленте (и необработанные диски) поддерживают только блоки данных фиксированной длины. Кроме того, при записи на любой носитель, такой как файловая система или сеть, требуется меньше времени для записи одного большого блока, чем множества маленьких блоков. Поэтому команда tar записывает данные в записях из множества блоков по 512 Б. Пользователь может указать коэффициент блокировки, который представляет собой количество блоков в записи. По умолчанию используется значение 20, что дает записи размером 10 КиБ[8].

Формат файла

Существует несколько форматов файлов tar, включая исторические и текущие. Два формата tar кодифицированы в POSIX: ustar и pax. Не кодифицирован, но все еще используется формат GNU tar.

Архив tar состоит из последовательности объектов файлов, отсюда и популярный термин tarball, отсылающий к тому, как смоляной шар собирает объекты всех видов, которые прилипают к его поверхности. Каждый файловый объект включает любые данные файла и предваряется 512-байтовой записью заголовка. Данные файла записываются без изменений, за исключением того, что его длина округляется до кратного 512 байтам. Исходная реализация tar не заботилась о содержимом байтов заполнения и оставляла данные буфера без изменений, но большинство современных реализаций tar заполняют дополнительное пространство нулями[9]. Конец архива отмечается как минимум двумя последовательными записями, заполненными нулями. (Происхождение размера записи tar, по-видимому, связано с 512-байтными секторами диска, используемыми в файловой системе Version 7 Unix.) Последний блок архива дополняется нулями до полной длины.

Заголовок

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

Поля, определенные исходным форматом Unix tar, перечислены в таблице ниже. Таблица индикатора ссылки/типа файла включает некоторые современные расширения. Когда поле не используется, оно заполняется нулевыми байтами. Заголовок использует 257 байт, затем дополняется нулевыми байтами, чтобы заполнить 512-байтную запись. В заголовке нет "магического числа" для идентификации файла.

Заголовок tar до POSIX.1-1988 (т.е. v7):

Смещение поля Размер поля Поле
0 100 Путь и имя файла
100 8 Режим файла (восьмеричный)
108 8 Числовой идентификатор пользователя владельца (восьмеричный)
116 8 Числовой идентификатор пользователя группы (восьмеричный)
124 12 Размер файла в байтах (восьмеричный)
136 12 Время последнего изменения в числовом формате времени Unix (восьмеричное)
148 8 Контрольная сумма для записи заголовка
156 1 Индикатор ссылки (тип файла)
157 100 Имя связанного файла

Поле Индикатор ссылки до POSIX.1-1988 может иметь следующие значения:

Поле индикатора ссылки
Значение Значение
'0' или (ASCII NUL) Нормальный файл
'1' Жесткая ссылка
'2' Символическая ссылка

Некоторые реализации tar до POSIX.1-1988 указывали каталог, добавляя косую черту (/) в конец имени.

Числовые значения кодируются восьмеричными числами с использованием цифр ASCII, с ведущими нулями. По историческим причинам также должен использоваться завершающий нулевой символ или пробел. Таким образом, хотя для хранения размера файла зарезервировано 12 байтов, можно сохранить только 11 восьмеричных цифр. Это дает максимальный размер файла 8 гигабайт в архивных файлах. Чтобы преодолеть это ограничение, в 2001 году star представил кодировку base-256, которая обозначается установкой старшего бита самого левого байта числового поля. GNU-tar и BSD-tar последовали этой идее. Кроме того, версии tar, выпущенные до первого стандарта POSIX 1988 года, дополняют значения пробелами, а не нулями.

Контрольная сумма вычисляется путем суммирования значений неподписанных байтов записи заголовка с восемью байтами контрольной суммы, принимаемыми за пробелы ASCII (десятичное значение 32). Он хранится в виде шестизначного восьмеричного числа с ведущими нулями, за которыми следует нулевой символ, а затем пробел. Различные реализации не придерживаются этого формата. Кроме того, некоторые исторические реализации tar рассматривали байты как знаковые. Реализации обычно вычисляют контрольную сумму обоими способами и считают ее правильной, если либо знаковая, либо беззнаковая сумма соответствует включенной контрольной сумме.

Файловые системы Unix поддерживают несколько ссылок (имен) для одного и того же файла. Если в архиве tar встречается несколько таких файлов, только первый из них архивируется как обычный файл; остальные архивируются как жесткие ссылки, причем в поле "имя связанного файла" указывается имя первого. При извлечении такие жесткие ссылки должны быть воссозданы в файловой системе.

Формат UStar

Большинство современных программ tar читают и записывают архивы в формате UStar (Unix Standard TAR[2][10]), введенном стандартом POSIX IEEE P1003.1 от 1988 года. Он ввел дополнительные поля заголовка. Старые программы tar будут игнорировать дополнительную информацию (возможно, извлекая частично именованные файлы), в то время как новые программы будут проверять наличие строки "ustar", чтобы определить, используется ли новый формат.

Формат UStar допускает более длинные имена файлов и хранит дополнительную информацию о каждом файле. Максимальный размер имени файла составляет 256, но он делится между предшествующим путем "префикс имени файла" и самим именем файла, поэтому может быть намного меньше[11].

Смещение поля Размер поля Поле
0 156 (Несколько полей, как в старом формате)
156 1 Флаг типа
157 100 (То же поле, что и в старом формате)
257 6 Индикатор UStar, "ustar", затем NUL
263 2 Версия UStar, "00"
265 32 Имя пользователя владельца
297 32 Имя группы владельца
329 8 Старший номер устройства
337 8 Младший номер устройства
345 155 Префикс имени файла

Поле флаг типа может иметь следующие значения:

Поле флага типа
Значение Значение
'0' или (ASCII NUL) Нормальный файл
'1' Жесткая ссылка
'2' Символическая ссылка
'3' Специальный символ
'4' Специальный блок
'5' Каталог
'6' FIFO
'7' Непрерывный файл
'g' Глобальный расширенный заголовок с метаданными (POSIX.1-2001)
'x' Расширенный заголовок с метаданными для следующего файла в архиве (POSIX.1-2001)
'A'–'Z' Расширения, специфичные для поставщика (POSIX.1-1988)
Все остальные значения Зарезервировано для будущей стандартизации

Специфичные для поставщика расширения POSIX.1-1988, использующие значения флага ссылки 'A'–'Z', частично имеют разное значение у разных поставщиков и поэтому рассматриваются как устаревшие и замененные расширениями POSIX.1-2001, которые также включают тег поставщика.

Тип '7' (Непрерывный файл) формально помечен как зарезервированный в стандарте POSIX, но предназначался для обозначения файлов, которые должны быть непрерывно размещены на диске. Немногие операционные системы поддерживают явное создание таких файлов, и поэтому большинство программ TAR не поддерживают их и будут обрабатывать файлы типа 7 так, как если бы они были типа 0 (обычный). Исключением являются старые версии GNU tar, работающие в операционной системе MASSCOMP RTU (Real Time Unix), которая поддерживала флаг O_CTG для функции open() для запроса непрерывного файла; однако эта поддержка была удалена из GNU tar, начиная с версии 1.24.

POSIX.1-2001/pax

В 1997 году Sun предложила метод добавления расширений в формат tar. Этот метод был позже принят для стандарта POSIX.1-2001. Этот формат известен как формат extended tar или формат pax. Новый формат tar позволяет пользователям добавлять любые типы расширений, помеченных поставщиком. Следующие теги определены стандартом POSIX:

  • atime, mtime: все временные метки файла с произвольным разрешением (большинство реализаций используют наносекундную точность)
  • path: имена путей неограниченной длины и кодировки набора символов
  • linkpath: целевые имена символических ссылок неограниченной длины и кодировки набора символов
  • uname, gname: имена пользователей и групп неограниченной длины и кодировки набора символов
  • size: файлы неограниченного размера (исторический формат tar составляет 8 ГБ)
  • uid, gid: идентификатор пользователя и идентификатор группы без ограничения размера (исторический формат tar ограничен максимальным идентификатором 2097151)
  • определение набора символов для имен путей и имен пользователей/групп (UTF-8)

В 2001 году программа Star стала первой tar, поддерживающей новый формат. В 2004 году GNU tar поддержал новый формат[12], хотя он еще не записывает его как вывод по умолчанию из программы tar.[13]

Формат pax разработан таким образом, что все реализации, способные читать формат UStar, также смогут читать формат pax. Единственными исключениями являются файлы, которые используют расширенные функции, такие как более длинные имена файлов. Для совместимости они кодируются в файлах tar как специальные файлы типа x или g, обычно в каталоге PaxHeaders.XXXX[14]. Реализация, поддерживающая pax, будет использовать эту информацию, в то время как неподдерживающие, такие как 7-Zip, будут обрабатывать их как дополнительные файлы[15].

Возможности утилит архивирования

Помимо создания и извлечения архивов, функциональность различных утилит архивирования различается. Например, реализации могут автоматически определять формат сжатых архивов TAR для извлечения, чтобы пользователю не нужно было его указывать, и позволять пользователю ограничивать добавление файлов теми, которые были изменены после указанной даты[16][17].

Использование

Синтаксис команды

tar [-options] <name of the tar archive> [files or directories which to add into archive]

Основные опции:

  • -c, --create — создать новый архив;
  • -a, --auto-compress — дополнительно сжать архив компрессором, который будет автоматически определен по расширению имени файла архива. Если имя архива заканчивается на *.tar.gz, то использовать gzip, если *.tar.xz, то использовать xz, *.tar.zst для Zstandard и т.д.;
  • -r, --append — добавить файлы в конец архива;
  • -x, --extract, --get — извлечь файлы из архива;
  • -f, --file — указать имя архива;
  • -t, --list — показать список файлов и папок в архиве;
  • -v, --verbose — показать список обработанных файлов.

Основное использование

Создать архивный файл archive.tar из файла README.txt и каталога src:

$ tar -cvf archive.tar README.txt src

Извлечь содержимое archive.tar в текущий каталог:

$ tar -xvf archive.tar

Создать архивный файл archive.tar.gz из файла README.txt и каталога src и сжать его с помощью gzip:

$ tar -cavf archive.tar.gz README.txt src

Извлечь содержимое archive.tar.gz в текущий каталог:

$ tar -xvf archive.tar.gz

Tarpipe

Tarpipe — это метод создания архива на стандартном выводе утилиты tar и передачи его другому процессу tar на его стандартном вводе, работающему в другом каталоге, где он распаковывается. Этот процесс копирует все дерево исходного каталога, включая все специальные файлы, например:

$ tar cf - srcdir | tar x -C destdir

Распространение программного обеспечения

Формат tar продолжает широко использоваться для распространения программного обеспечения с открытым исходным кодом. *NIX-дистрибутивы используют его в различных механизмах распространения исходных и двоичных пакетов, при этом большая часть исходного кода программного обеспечения доступна в сжатых архивах tar.

Ограничения

Исходный формат tar был создан в первые дни Unix, и, несмотря на его широкое использование в настоящее время, многие из его конструктивных особенностей считаются устаревшими[18].

Другие форматы были созданы для устранения недостатков tar.

Имена файлов

Из-за размера поля исходный формат TAR не мог хранить пути к файлам и имена, превышающие 100 символов.

Чтобы преодолеть эту проблему, сохраняя при этом возможность чтения существующими утилитами TAR, GNU tar хранит пути к файлам и имена, превышающие 100 символов, в записях @LongLink, которые будут рассматриваться как обычные файлы утилитами TAR, не знающими об этой функции[19]. Аналогично, формат PAX использует записи PaxHeaders[20].

Атрибуты

Многие старые реализации tar не записывают и не восстанавливают расширенные атрибуты (xattrs) или списки управления доступом (ACL). В 2001 году Star представил поддержку ACL и расширенных атрибутов с помощью собственных тегов для POSIX.1-2001 pax. bsdtar использует расширения star для поддержки ACL[21]. Более поздние версии GNU tar поддерживают расширенные атрибуты Linux, повторно реализуя расширения star[22]. Ряд расширений рассматривается в руководстве по типам файлов для BSD tar, tar(5)[21].

Tarbomb

Tarbomb, на хакерском сленге, — это tar-архив, содержащий большое количество элементов, содержимое которых при распаковке записывается в текущий каталог или какой-либо другой существующий каталог, а не в каталог, созданный tar-архивом специально для извлеченных выходных данных[23]. В лучшем случае это неудобство для пользователя, который обязан идентифицировать и удалить ряд файлов, перемежающихся с другим содержимым каталога. Такое поведение считается плохим тоном со стороны создателя архива.

Связанная с этим проблема — использование абсолютных путей или ссылок на родительский каталог при создании tar-файлов. Файлы, извлеченные из таких архивов, часто будут создаваться в необычных местах за пределами рабочего каталога и, как и tarbomb, могут перезаписывать существующие файлы. Однако современные версии FreeBSD и GNU tar не создают и не извлекают абсолютные пути и ссылки на родительский каталог по умолчанию, если это явно не разрешено флагом -P или опцией --absolute-names. Программа bsdtar, которая также доступна во многих операционных системах и является утилитой tar по умолчанию в Mac OS X v10.6, также не следует ссылкам на родительский каталог или символическим ссылкам[24].

Если у пользователя доступна только очень старая версия tar, которая не поддерживает эти меры безопасности, эти проблемы можно смягчить, сначала изучив tar-файл с помощью команды tar tf archive.tar, которая выводит список содержимого и позволяет впоследствии исключить проблемные файлы. Эти команды не извлекают никаких файлов, но отображают имена всех файлов в архиве. Если какие-либо из них являются проблемными, пользователь может создать новый пустой каталог и извлечь архив в него — или вообще отказаться от tar-файла. Большинство графических инструментов могут отображать содержимое архива перед его извлечением. Vim может открывать архивы tar и отображать их содержимое. GNU Emacs также может открывать архив tar и отображать его содержимое в буфере dired.

Произвольный доступ

Формат tar был разработан без централизованного индекса или таблицы содержимого для файлов и их свойств для потоковой передачи на устройства резервного копирования на магнитной ленте. Вместо этого метаданные для каждого файла (такие как имя, размер, временные метки) для каждого файла хранятся в заголовке перед каждым файлом. Архив необходимо читать последовательно, чтобы вывести список или извлечь файлы. Для больших архивов tar это приводит к снижению производительности, что делает архивы tar непригодными для ситуаций, когда часто требуется произвольный доступ к отдельным файлам.

В свою очередь, такая конструкция делает архивы TAR устойчивыми к повреждениям из-за отсутствующих частей, как в форме цифровых файлов, так и физической ленты. Усеченный файл TAR с отсутствующими частями на обоих концах по-прежнему позволяет восстановить те части, которые не отсутствуют, включая пути к файлам, имена файлов и метаданные, начиная с первого заголовка TAR, который не отсутствует[25].

Если правильно сформированный tar-файл хранится на носителе с произвольным доступом (т.е. позволяет эффективно выполнять произвольное чтение), программа tar все равно может относительно быстро (за линейное время относительно количества файлов) искать файл, пропуская чтение файлов в соответствии с полем "size" в заголовках файлов. Это основа для опции -n в GNU tar. Когда tar-файл сжимается целиком, формат сжатия, обычно не поддерживающий произвольный доступ, не позволяет выполнить эту оптимизацию[26]. Чтобы сохранить возможность произвольного доступа, tar-файлы также должны быть правильно объединены, путем удаления завершающего нулевого блока в конце каждого файла[27].

Дубликаты

Еще одна проблема с форматом tar заключается в том, что он позволяет нескольким (возможно, разным) файлам в архиве иметь одинаковые пути и имена файлов. При извлечении такого архива обычно более поздняя версия файла перезаписывает предыдущую.

Это может создать неявный (неочевидный) tarbomb, который технически не содержит файлов с абсолютными путями или ссылающихся на родительские каталоги, но все равно вызывает перезапись файлов за пределами текущего каталога (например, архив может содержать два файла с одинаковым путем и именем файла, первый из которых является символической ссылкой на некоторое место за пределами текущего каталога, а второй — обычным файлом; тогда извлечение такого архива в некоторых реализациях tar может вызвать запись в место, на которое указывает символическая ссылка).

Ключевые реализации

Исторически сложилось так, что во многих системах реализован tar, и многие общие файловые архиваторы имеют по крайней мере частичную поддержку tar (часто с использованием одной из приведенных ниже реализаций). История tar — это история несовместимостей, известная как "войны tar". Большинство реализаций tar также могут читать и создавать архивы cpio и pax (последний на самом деле является форматом tar с расширениями POSIX-2001).

Ключевые реализации в порядке возникновения:

  • Solaris tar, основанный на оригинальном Unix V7 tar и поставляемый по умолчанию в операционной системе Solaris
  • GNU tar является стандартным для большинства дистрибутивов Linux. Он основан на реализации pdtar, находящейся в общественном достоянии, которая появилась в 1987 году. Последние версии могут использовать различные форматы, включая ustar, pax, GNU и v7.
  • FreeBSD tar (также BSD tar) стал стандартным tar в большинстве операционных систем, основанных на Berkeley Software Distribution, включая Mac OS X. Основная функциональность доступна в виде libarchive для включения в другие приложения. Эта реализация автоматически определяет формат файла и может извлекать данные из архивов tar, pax, cpio, zip, rar, ar, xar, rpm и образов ISO 9660 cdrom. Он также поставляется с функционально эквивалентным интерфейсом командной строки cpio.
  • Schily tar, более известный как star (/ˈɛsˌtɑr/)[28], имеет историческое значение, поскольку некоторые из его расширений были বেশ популярны. Впервые опубликован в апреле 1997 года[29], его разработчик заявил, что начал разработку в 1982 году[30].
  • Модуль Python tarfile поддерживает несколько форматов tar, включая ustar, pax и gnu; он может читать, но не создавать формат V7 и расширенный формат SunOS tar; pax является форматом по умолчанию для создания архивов[31]. Доступен с 2003 года[32].

Кроме того, большинство реализаций pax и cpio могут читать и создавать файлы tar нескольких типов.

Суффиксы для сжатых файлов

Файлы архивов tar обычно имеют суффикс .tar (например, somefile.tar).

Файл архива tar содержит несжатые потоки байтов файлов, которые он содержит. Для сжатия архива доступны различные программы сжатия, такие как gzip, bzip2, xz, lzip, lzma, zstd или compress, которые сжимают весь архив tar. Обычно сжатая форма архива получает имя файла путем добавления суффикса компрессора, специфичного для формата, к имени файла архива. Например, архив tar archive.tar называется archive.tar.gz, когда он сжимается gzip.

Популярные программы tar, такие как версии BSD и GNU tar, поддерживают параметры командной строки Z (compress), z (gzip) и j (bzip2) для сжатия или распаковки архивного файла при создании или распаковке. Относительно недавние дополнения включают --lzma (LZMA), --lzop (lzop), --xz или J (xz), --lzip (lzip) и --zstd[33]. Распаковка этих форматов обрабатывается автоматически, если используются поддерживаемые расширения имен файлов, а сжатие обрабатывается автоматически с использованием тех же расширений имен файлов, если опция --auto-compress (краткая форма -a) передается в применимую версию GNU tar[11]. BSD tar обнаруживает еще более широкий спектр компрессоров (lrzip, lz4), используя не имя файла, а данные внутри[34]. Нераспознанные форматы должны быть вручную сжаты или распакованы с помощью конвейера.

Ограничения MS-DOS 8.3 filename привели к дополнительным соглашениям об именовании сжатых архивов tar. Однако эта практика сократилась, поскольку FAT теперь предлагает длинные имена файлов.

Архивирование Tar часто используется вместе с методом сжатия, таким как gzip, для создания сжатого архива. Как показано, объединение файлов в архиве сжимается как единое целое.
Эквиваленты суффиксов файлов[11]
Компрессор Длинный Короткий
bzip2 .tar.bz2 .tb2, .tbz, .tbz2, .tz2
gzip .tar.gz .taz, .tgz
lzip .tar.lz
lzma .tar.lzma .tlz
lzop .tar.lzo
xz .tar.xz .txz
compress .tar.Z .tZ, .taZ
zstd .tar.zst .tzst

См. также

Ссылки

  1. https://svn.apache.org/viewvc/httpd/httpd/tags/2.4.57/docs/conf/mime.types?view=markup#l1320
  2. 1 2 tar(5) manual page. FreeBSD.org. FreeBSD (20 мая 2004). Дата обращения: 2 мая 2017.
  3. IEEE Std 1003.1-1988, IEEE Standard for Information Technology - Portable Operating System Interface (POSIX)
  4. IEEE Std 1003.1-2001, IEEE Standard for Information Technology - Portable Operating System Interface (POSIX)
  5. IBM. IBM System i Version 7.2 Programming Qshell (англ.). IBM. Дата обращения: 5 сентября 2020.
  6. Announcing Windows 10 Insider Preview Build 17063 for PC. Windows Experience Blog (19 декабря 2017). Дата обращения: 2 июля 2018.
  7. Tar and Curl Come to Windows! (22 марта 2019).
  8. Blocking. ftp.gnu.org. Дата обращения: 26 августа 2020.
  9. Hoo, James. Open/Extract TAR File with Freeware on Windows/Mac/Linux. e7z Org.. Дата обращения: 3 сентября 2019. Архивировано 6 февраля 2015 года.
  10. Kientzle, Tim. Internet File Formats. — Coriolis Groups Books, 1995. — P. 196. — ISBN 978-1-883577-56-8.
  11. 1 2 3 GNU tar 1.32: 8.1 Using Less Space through Compression. GNU (23 февраля 2019). Дата обращения: 11 августа 2019.
  12. NEWS, git.savannah.gnu.org - search for "Added support for POSIX.1-2001 and ustar archive formats."
  13. GNU tar 1.34: 8. Controlling the Archive Format. GNU. Дата обращения: 11 июля 2022.
  14. pax — , The Single UNIX® Specification, выпуск 7 от The Open Group  (англ.)
  15. #2116 Tars with pax headers not parsed. 7-Zip / Bugs | SourceForge.
  16. GNU tar 1.35: 6.8 Operating Only on New Files
  17. Differences Between BSD tar and GNU tar and star | Baeldung on Linux
  18. duplicity: New file format. duplicity.nongnu.org.
  19. gnu_tar/src/create.c at master · gitGNU/gnu_tar · GitHub, line 546
  20. src/bin/pax/tar.c at 8df76133309eacd4092b091ee0504adb842322a5 · openbsd/src · GitHub, line 1066
  21. 1 2 tar(5) — страница справки man по форматам файлов FreeBSD  (англ.)
  22. Extended attributes: the good, the not so good, the bad. Les bons comptes (15 июля 2014). — «The extended attributes can be very valuable for storing file metadata (e.g. author="John Smith", subject="country landscape"), in the many cases where you do not want or can't store this data in the file internal properties.» Дата обращения: 3 сентября 2019. Архивировано 14 декабря 2014 года.
  23. Tarbomb Definition (англ.). The Linux Info Project. Дата обращения: 12 декабря 2024.
  24. bsdtar(1). man.freebsd.org.
  25. Creating TAR with 100 KB missing at the beginning: tail --bytes=+100000 "intact archive.tar" >>"missing beginning.tar". Next header can be found using a hex editor. Recover using dd if="missing beginning.tar" of=recovered.tar ibs=[bytes until next header which starts with file path and name] skip=1. Quotation marks are not needed for file names without spaces.
  26. BillThor. What makes a tar archive seekable? (англ.). Super User (28 июля 2017). Дата обращения: 15 декабря 2023.
  27. GNU tar 1.35: 4.2.4 Combining Archives with --concatenate. www.gnu.org.
  28. Schilling, Jörg. Star a very fast and Posix 1003.1 compliant tar archiver for UNIX. Дата обращения: 2 сентября 2023. Архивировано 9 июля 2023 года.
  29. Thomas E. Dickey. TAR versus Portability: Schily tar (4 января 2015). Дата обращения: 23 октября 2021.
  30. Jörg Schilling. star - unique standard tape archiver (4 сентября 2021). Дата обращения: 23 октября 2021.
  31. tarfile module, python.org
  32. tarfile.py, github.com
  33. Poznyakoff, Sergey. tar-1.31 released [stable]. GNU mailing lists (2 января 2019). Дата обращения: 6 августа 2019.
  34. tar(1) — страница справки man по пользовательским командам FreeBSD  (англ.)

Внешние ссылки

Примечания

No tags for this post.