Как сжимать и извлекать файлы в Linux с помощью команд tar и gzip

Сжатие файлов является эффективным средством для передачи файлов между различными компьютерами и серверами. Администраторы Linux регулярно выполняют такие задачи, как архивирование, сжатие и извлечение файлов. Архив представляет собой один файл, который содержит несколько файлов или каталогов. Если вы сталкивались с файлами tar с расширениями .tar, .tar.gz, .xz или .bz2, то, вероятно, они были созданы с помощью утилиты .tar.

Эти архивы сжимают дисковое пространство на локальных дисках и облегчают загрузку файлов из Интернета. После загрузки архива пользователи могут использовать инструменты для распаковки, чтобы извлечь файлы в свои системы. Дистрибутивы Linux предлагают различные утилиты командной строки, в частности те, которые используют команду tar gzip для эффективного сжатия или извлечения больших архивов.

В этом гайде демонстрируются функции команд tar и gzip для архивирования, сжатия и извлечения файлов в системах Linux. Здесь мы будем использовать дистрибутив Linux Ubuntu 22.04 для реализации и выполнения всех команд.

Что такое tar?

tar означает «ленточный архив» и представляет собой широко используемую утилиту сжатия файлов командной строки. Она используется для сжатия и извлечения архивов.

Сжатые архивы содержат более одного файла и каталогов, обозначенных расширениями, такими как .tar, .tar.gz, .xz или .bz2, известными как tarballs. В Linux разработчики могут распространять исходный код и важные файлы через файлы tar gz. Кроме того, вы также можете выполнять сжатие и распаковку файлов в разные форматы с помощью утилит tar gzip и bzip2.

Что такое gzip?

gzip — это инструмент для сжатия файлов без потерь в Linux, который используется для одновременного сжатия и распаковки файлов. Он поддерживает как командную строку, так и графический интерфейс, что обеспечивает его универсальность.

Ключевые особенности утилиты gzip включают одновременное сжатие нескольких файлов, выполнение в терминале, использование алгоритмов LZ77 и Lempel–Ziv–Welch, сокращение длинных имен файлов и автоматическое создание расширений файлов .gz. В целом, gzip является надежным и удобным решением для сжатия, разработанным специально для среды Linux.

tar и gzip (инструменты для сжатия файлов)

Основное различие между этими двумя инструментами заключается в их основных функциях:

Утилита tar отвечает за создание архивов из нескольких файлов, тогда как gzip предназначена для сжатия отдельных файлов. Несмотря на это различие, инструменты могут использоваться вместе. С помощью tar можно выполнить задачу gzip по сжатию архивируемых файлов. Используя переключатель «z» с командой tar, gzip интегрируется в процесс tar, что позволяет беспрепятственно создавать сжатые архивы.

Как сжать файл или каталог с помощью команды tar

Основной синтаксис для сжатия файла с помощью tar:

$ tar -czvf <имя файла tar compress> </путь назначения для файлов/или/каталога>

Например, предположим, что в текущем каталоге у вас есть файл/каталог с именем «/home/samreena». Чтобы сжать этот каталог в архив с именем testfile.tar.gz, необходимо выполнить следующую команду:

$ tar -czvf testfile.tar.gz /home/samreena

В приведенной выше команде tar — это утилита командной строки для сжатия файла или каталога.

После этого используются флаги или переключатели «-czvf», которые означают следующее:

-c: создает файл сжатия tar или архивный файл

-z: сжимает архив с помощью gzip

-v: отображает «подробную информацию», эта опция показывает детали прогресса в окне терминала во время создания архива.

-f: этот параметр позволяет присвоить имя архивной файлу.

Как сжать несколько файлов или каталогов в архивный файл

Чтобы сжать несколько файлов или каталогов в один архив, перейдите в каталог, где находятся все файлы или подкаталоги, с помощью команды «cd». Используйте команду tar с соответствующими флагами, такими как «tar czvf», для создания сжатого архива. Например, чтобы сжать файлы в архив, сжатый с помощью gzip, можно использовать следующую команду:

$ tar -czvf <archive_name.tar.gz> <file1 file2 file3 …>

Например, если в текущем каталоге «Документы» имеется три файла с именами «index.html», «testfile.tar.gz» и «testfolder2» и необходимо сжать их в архив с именем «test_archive.tar.gz», необходимо выполнить следующую команду:

$ tar -czf test_archive.tar.gz index.html testfile.tar.gz testfolder2

Это создаст сжатый архив с именем test_archive.tar.gz, содержащий указанные файлы.

Как исключить файлы или каталоги при архивировании файлов

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

В этом случае можно использовать опцию --exclude. Таким образом, можно указать файлы, которые должны быть исключены из создаваемого архива. Файлы, соответствующие указанным шаблонам в опции --exclude, будут автоматически исключены из архива tar. Чтобы исключить файлы из архива, выполните следующую команду:

$ tar --exclude=„*.html“ -czvf test_archive.tar.gz /home/samreena

Как извлечь файлы или каталоги из архива с помощью команды tar

Чтобы извлечь файлы с помощью команды tar в Linux, необходимо отметить, что tar, стандартный инструмент в большинстве дистрибутивов Linux, поддерживает различные форматы сжатия, такие как bzip2, gzip, lzip, lzop, lzma, xz и compress. При создании архива tar рекомендуется включить соответствующий суффикс в имя файла архива, чтобы указать формат сжатия. Например, предположим, у вас есть архив tar, сжатый с помощью gzip, и файл называется «test_archive.tar.gz». Чтобы извлечь сжатый файл tar, можно использовать следующий синтаксис:

$ tar -xf test_archive.tar.gz

Если вы хотите отобразить все имена файлов во время процесса извлечения, используйте опцию «-v»:

$ tar -xvf test_archive.tar.gz

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

Как извлечь архив в определенную директорию

Чтобы извлечь файл tar в другую директорию, а не в текущую, используйте опцию «-C» и укажите путь к директории.

Предположим, вы хотите извлечь содержимое архива в «home/samreena». В этом случае укажите путь к директории и имя архива с помощью следующей команды:

$ tar -xvf test_archive.tar.gz -C /home/samreena

Как извлечь определенный файл или каталог из архива

Иногда возникает необходимость извлечь из архива tar определенные файлы или каталоги, а не все содержимое целиком. Для этого можно использовать список имен файлов или каталогов, разделенных пробелами, после имени архива в команде.

Например, предположим, что вы хотите извлечь «index.html» и «testfolder2» из архива tar. В этом случае в терминале можно выполнить следующую команду:

$ tar -xf test_archive.tar,gz index.html testfolder2

В случаях, когда предпринимается попытка извлечь файл, который отсутствует в архиве, команда выдает сообщение об ошибке «Not found in archive» (Не найдено в архиве):

$ tar -xf test_archive.tar.gz README

Параметры команды tar:

x: используется для извлечения архива tar или определенных файлов из архива.

v: отображает подробную информацию или имена файлов во время обработки архива.

f: указывает tar, с какими файлами следует работать.

t: отображает список имен файлов, включенных в архив.

Заключение

В этом руководстве мы продемонстрировали, как сжимать или извлекать файлы с помощью инструментов tar и gzip в Linux. Оба инструмента полезны для сжатия и распаковки файлов и каталогов в вашей системе. Если вы используете Linux VPS-сервер, вы можете эффективно сжимать и извлекать файлы с помощью этих утилит. Если у вас есть вопросы, пожалуйста, задавайте их.

Blog