Почему мне нужен один файл?

В моей компании мы загружаем моментальный снимок базы данных локального развития в виде файла db.dump.tar.gz Сжатие имеет смысл, но tarball содержит только один файл ( db.dump ).

Есть ли смысл архивировать один файл или есть .tar.gz просто такая распространенная идиома? Почему не просто .gz ?

  • Использование файлов, имеющих пробелы в их имени в трубах
  • Резервное копирование размонтированного устройства в файл tar
  • Установить установленную систему в файл tar.gz
  • Ошибка AIX tar: сейчас недостаточно памяти.
  • Как проверить / проверить .tar.bz архивы?
  • Есть ли способ конвертировать zip в tar без извлечения его в файловую систему?
  • Поиск команды и tar в скрипте
  • Сжатие Fly для каталога
  • 8 Solutions collect form web for “Почему мне нужен один файл?”

    Преимущества использования .tar.gz вместо .gz – это то, что

    • tar хранит больше метаданных (разрешения UNIX и т. д.), чем gzip .
    • установка может быть легко расширена для хранения нескольких файлов
    • Файлы .tar.gz очень распространены, файлы только-gzipped могут озадачить некоторых пользователей. (см. комментарий MelBurslans )

    Накладные расходы на использование tar также очень малы.

    Если это действительно не нужно, я до сих пор не рекомендую tar один файл. Существует много полезных инструментов, которые могут напрямую обращаться к сжатым одиночным файлам (например, zcat , zgrep и т. Д.), Также существующим для bzip2 и xz ).

    На самом деле вы задаете только половину вопроса. Другой вопрос: «Зачем мне сжимать tar-файл с помощью gzip?». И ответ заключается не только в том, что gzip делает файл меньше (в большинстве случаев):

    tar :

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

    gzip :

    • может хранить исходное имя файла, но это необязательно
    • имеет контрольную сумму CRC-32 по исходным данным
    • он сжимает файл

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

    Комбинация более мощная, чем отдельные команды / форматы, потому что они дополняют друг друга .

    Существует довольно большое преимущество использования текстовых файлов только gzipped – содержимое может быть напрямую доступно с помощью средств командной строки, таких как less , zgrep , zcat .

    Я бы сказал, что, вероятно, люди просто не понимают, что могут использовать gzip / bzip2 / xz без tar. Возможно, потому что они происходят из фона DOS / Windows, где для сжатия и архивирования обычно требуется интегрировать в один формат ( ZIP , RAR и т. Д.).

    Хотя в некоторых ситуациях могут быть небольшие преимущества при использовании tar в связи с хранением метаданных или возможностью добавления дополнительных файлов, также есть недостатки. С простым файлом gzip / bzip2 / xz вы можете распаковать его и передать распакованные данные прямо на другой инструмент (например, вашу базу данных) без необходимости хранить распакованные данные в виде файла на диске. С tarball это сложнее.

    Существует важная разница, которая могла бы сделать использование tar важным при некоторых обстоятельствах: помимо «метаданных», о которых упоминал @jofel в своем ответе, tar записывает имя файла в архив. Когда вы извлекаете его, вы получаете исходное имя файла независимо от того, что вызван архивом.

    В вашем случае tar-архив и файл, который он содержит, имеют связанные имена db.dump.tar.gz и db.tar , но предположим, что вы переименуете файл tar до 20-Apr-16.dump.tgz или что-то еще. Затяните это с помощью tar xvfz , и вы получите db.dump . Для сравнения, распакуйте 20-Apr-16.dump.gz и у вас есть 20-Apr-16.dump . (Изменить: как указано в комментариях, gzip также записывает имя файла, но обычно он не используется при распаковке). Архив tar также может содержать относительное имя пути, которое помещает извлеченный файл в подкаталог.

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

    В дополнение ко всем другим ответам я недавно столкнулся с ситуацией с сценариями, где ожидался только один файл, но предыдущий сотрудник написал сценарии с возможностью создания более одного файла. Таким образом, файлы были tarred и bzipped, затем перенесены и расширены.

    Когда процесс вырос до точки, он сделал файл размером 4,3 ГБ, он перевернулся и сделал файл .dump.001 в дополнение к файлу .dump. Все скрипты продолжали работать.

    Это проактивный сисадмин лень определяется!

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

    Независимо от того, был ли tar'd или нет, стандартная практика заключается в том, чтобы сжать файл, чтобы ускорить загрузку, и избежать нехватки дискового пространства.

    Тар особенно полезен для нескольких файлов, не записанных в формальную файловую систему, это всегда было. Если по какой-то причине случается, что только один файл должен быть написан, это не имеет никакого реального последствия. Я могу dd мой .tar.gz напрямую в / dev / sdx независимо от раздела или файловой системы. Это может быть и лента.

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

    Linux и Unix - лучшая ОС в мире.