tar и gzip
100%

Пакеты · Урок 3

tar и gzip

Узнайте, как архивировать файлы с помощью tar, сжимать потоки через gzip и проверять архивы перед безопасным извлечением.

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

Сжатие одного потока с помощью `gzip`

По умолчанию gzip сжимает файл и заменяет исходное имя файлом с расширением .gz:

$ gzip report.txt

Обычно после успешного создания report.txt.gz файл report.txt удаляется. Распакуйте его командой:

$ gunzip report.txt.gz

Там, где это поддерживается, используйте gzip -k report.txt, чтобы сохранить входной файл, либо применяйте стандартные потоки для явного управления. Расширение имени — соглашение, а не доказательство настоящего формата; содержимое можно проверить инструментами вроде file.

Каково основное назначение gzip в этом уроке?

Создание архива tar

Создайте несжатый архив:

$ tar -cvf project.tar file1 file2 directory1
  • -c создаёт новый архив.
  • -v перечисляет элементы во время обработки и является необязательным.
  • -f project.tar задаёт имя файла архива; поскольку -f принимает аргумент, располагайте имя рядом с ним.

Пути хранятся как имена элементов архива. Создавайте архивы из намеренно выбранного рабочего каталога и не захватывайте случайно секреты, кэши, сокеты или широкие абсолютные пути.

Какой параметр tar создаёт новый архив?

Создание сжатого gzip архива tar

GNU tar и многие другие реализации могут вызвать gzip параметром -z:

$ tar -czvf project.tar.gz file1 file2 directory1

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

Что запрашивает -z в показанной команде tar?

Перечисление перед извлечением

Считайте архив от другой стороны недоверенными входными данными. Сначала перечислите имена его элементов:

$ tar -tzf download.tar.gz

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

Извлекайте в новый непривилегированный промежуточный каталог:

$ mkdir extraction-stage
$ tar -xzf download.tar.gz -C extraction-stage

Не извлекайте непроверенный архив от имени root. Проверьте созданные объекты до переноса выбранных файлов в конечные места.

Какая операция перечисляет элементы архива без их извлечения?

Другие форматы сжатия

Реализации tar могут работать со средствами сжатия bzip2 и xz, которые в GNU tar обычно выбираются соответственно через -j и -J. Поддержка форматов и автоматическое обнаружение различаются, поэтому обращайтесь к tar --help или локальному руководству. ZIP — отдельный формат архива, с которым работают инструменты zip и unzip.

Делает ли сжатие gzip архив tar конфиденциальным?

Урок завершён

Вы завершили tar и gzip

Теперь вы можете безопасно сочетать архивацию tar со сжатием gzip.

  • Отличайте архив tar от сжатия gzip.

  • Создавайте архивы через -c, а потоки gzip — через -z.

  • Перечисляйте элементы через -t до извлечения через -x.

  • Извлекайте недоверенное содержимое в непривилегированный промежуточный каталог.

  • Рассматривайте сжатие отдельно от шифрования.

Сохраните прогресс

Создайте бесплатный аккаунт, чтобы сохранить этот урок и продолжить на любом устройстве.

Создать бесплатный аккаунт
Следующий Урок
Назад к Пакеты