Поиск по сайту:

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


Резюме: Запустите «tar -czvf (имя архива).tar.gz (путь к файлу)» в Терминале, чтобы сжать файл или папку. Чтобы извлечь архив в текущую папку, выполните команду «tar -xzvf (файл архива)» .

Команда tar в Linux часто используется для создания архивных файлов .tar.gz или .tgz, также называемых «tarballs». Эта команда имеет большое количество опций, но вам достаточно запомнить несколько букв, чтобы быстро создавать архивы с помощью tar. Команда tar также может извлекать полученные архивы.

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

Сжать весь каталог или отдельный файл

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

tar -czvf name-of-archive.tar.gz /path/to/directory-or-file

Вот что на самом деле означают эти переключатели:

  • -c: Cсоздать архив.
  • -z: сжать архив с помощью gzip.
  • -v: отображать ход выполнения в терминале при создании архива, также известный как режим «verbose». В этих командах буква v всегда необязательна, но она полезна.
  • -f: позволяет указать fимя файла архива.

Допустим, у вас есть каталог с именем «stuff» в текущем каталоге, и вы хотите сохранить его в файл с именем archive.tar.gz. Вы должны запустить следующую команду:

tar -czvf archive.tar.gz stuff

Или, скажем, в текущей системе есть каталог /usr/local/something, и вы хотите сжать его в файл с именем archive.tar.gz. Вы должны запустить следующую команду:

tar -czvf archive.tar.gz /usr/local/something

Сжать несколько каталогов или файлов одновременно

Хотя tar часто используется для сжатия одного каталога, вы также можете использовать его для сжатия нескольких каталогов, нескольких отдельных файлов или того и другого. Просто предоставьте список файлов или каталогов вместо одного. Например, допустим, вы хотите сжать каталог /home/ubuntu/Downloads, каталог /usr/local/stuff и файл /home/ubuntu/Documents/notes.txt. Вы просто запустите следующую команду:

tar -czvf archive.tar.gz /home/ubuntu/Downloads /usr/local/stuff /home/ubuntu/Documents/notes.txt

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

Исключить каталоги и файлы

В некоторых случаях может потребоваться сжать весь каталог, но не включать определенные файлы и каталоги. Вы можете сделать это, добавив переключатель --exclude для каждого каталога или файла, который вы хотите исключить.

Например, допустим, вы хотите сжать /home/ubuntu, но не хотите сжимать каталоги /home/ubuntu/Downloads и /home/ubuntu/.cache. Вот как это сделать:

tar -czvf archive.tar.gz /home/ubuntu --exclude=/home/ubuntu/Downloads --exclude=/home/ubuntu/.cache

Переключатель --exclude очень эффективен. Он не принимает имена каталогов и файлов — он фактически принимает шаблоны. Вы можете сделать с ним гораздо больше. Например, вы можете заархивировать весь каталог и исключить все файлы .mp4 с помощью следующей команды:

tar -czvf archive.tar.gz /home/ubuntu --exclude=*.mp4

Вместо этого используйте сжатие bzip2

Хотя сжатие gzip чаще всего используется для создания файлов .tar.gz или .tgz, tar также поддерживает сжатие bzip2. Это позволяет создавать файлы, сжатые с помощью bzip2, часто называемые файлами .tar.bz2, .tar.bz или .tbz. Для этого просто замените -z для gzip в командах здесь на -j для bzip2.

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

Например, вместо первого примера, который мы предоставили для сжатия каталогаstuff, вы должны запустить следующую команду:

tar -cjvf archive.tar.bz2 stuff

Извлечь архив

Если у вас есть архив, вы можете извлечь его с помощью команды tar. Следующая команда извлечет содержимое archive.tar.gz в текущий каталог.

tar -xzvf archive.tar.gz

Это то же самое, что и команда создания архива, которую мы использовали выше, за исключением того, что переключатель -x заменяет переключатель -c. Это означает, что вы хотите извлечь архив, а не создавать его.

Вы можете извлечь содержимое архива в определенный каталог. Вы можете сделать это, добавив переключатель -C в конец команды. Например, следующая команда извлечет содержимое файла archive.tar.gz в каталог /tmp.

tar -xzvf archive.tar.gz -C /tmp

Если файл сжат с помощью bzip2, замените «z» в приведенных выше командах на «j».

Это самое простое использование команды tar. Команда включает большое количество дополнительных параметров, поэтому мы не можем перечислить их все здесь. Для дополнительной информации. запустите команду info tar в оболочке, чтобы просмотреть страницу подробной информации о команде tar. Когда закончите, нажмите клавишу q, чтобы закрыть информационную страницу. Вы также можете прочитать онлайн-руководство по tar.

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

RELATED: Best Linux Laptops for Developers and Enthusiasts