Архивация и сжатие решают разные задачи. Архив объединяет дерево каталогов и его метаданные в один поток. Сжатие кодирует поток, уменьшая его размер. Файл .tar.gz по соглашению является архивом tar, поток которого сжат с помощью gzip.
Пакеты · Урок 3
tar и gzip
Узнайте, как архивировать файлы с помощью 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.
Урок завершён
Вы завершили tar и gzip
Теперь вы можете безопасно сочетать архивацию tar со сжатием gzip.
Отличайте архив tar от сжатия gzip.
Создавайте архивы через
-c, а потоки gzip — через-z.Перечисляйте элементы через
-tдо извлечения через-x.Извлекайте недоверенное содержимое в непривилегированный промежуточный каталог.
Рассматривайте сжатие отдельно от шифрования.
Сохраните прогресс
Создайте бесплатный аккаунт, чтобы сохранить этот урок и продолжить на любом устройстве.
Создать бесплатный аккаунт