Как сжимать и извлекать файлы в 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