Як витягти файли з файлу .tar.gz або .tar.bz2 у Linux

Categories:

Файли Tar є стиснутими архівами. Ви будете часто зустрічатися з ними під час використання дистрибутива Linux, такого як Ubuntu, або навіть під час використання терміналу в macOS. Ось як розпакувати або розпакувати вміст файлу tar, також відомого як tar-файл.

Що означають .tar.gz і .tar.bz2?

Файли з розширенням .tar.gz або .tar.bz2 є стисненими архівними файлами. Файл лише з розширенням .tar не стиснутий, але це буде дуже рідко.

Частина розширення файлу .tar означає стрічковий архів, тому обидва ці типи файлів називаються файлами tar. Файли tar датуються 1979 роком, коли була створена команда tar, щоб дозволити системним адміністраторам архівувати файли на плівку. Через сорок років ми все ще використовуємо команду tar для вилучення файлів tar на наші жорсткі диски. Хтось десь, ймовірно, все ще використовує дьоготь зі стрічкою.

Суфікс розширення .gz або .bz2 вказує на те, що архів було стиснуто за допомогою алгоритму стиснення gzip або bzip2. Команда tar буде щасливо працювати з обома типами файлів, тому не має значення, який метод стиснення використовувався — і вона повинна бути доступна скрізь, де у вас є оболонка Bash. Вам просто потрібно використовувати відповідні параметри командного рядка tar.

Вилучення файлів з файлів Tar

Скажімо, ви завантажили два файли нот. Один файл називається ukulele_songs.tar.gz, інший — guitar_songs.tar.bz2. Ці файли знаходяться в каталозі завантажень.

Давайте витягнемо пісні укулеле:

tar -xvzf ukulele_songs.tar.gz

Коли файли розпаковані, вони відображаються у вікні терміналу.

  Як використовувати tmux в Linux (і чому він краще, ніж екран)

Параметри командного рядка, які ми використовували:

-x: витягнути, отримати файли з файлу tar.
-v: докладно, список файлів, як вони розпаковуються.
-z: Gzip, використовуйте gzip, щоб розпакувати файл tar.
-f: файл, ім’я файлу tar, з яким ми хочемо працювати з tar. Після цього параметра має бути назва файлу tar.

Перерахуйте файли в каталозі за допомогою ls, і ви побачите, що створено каталог під назвою Ukulele Songs. Вилучені файли знаходяться в цьому каталозі. Звідки взявся цей каталог? Він містився у файлі tar і був витягнутий разом з файлами.

Тепер давайте витягнемо пісні під гітару. Для цього ми будемо використовувати майже ту саму команду, що й раніше, але з однією важливою відмінністю. Суфікс розширення .bz2 повідомляє, що він був стиснутий за допомогою команди bzip2. Замість використання параметра -z (gzip), ми будемо використовувати параметр -j (bzip2).

tar -xvjf guitar_songs.tar.bz2

Знову, файли відображаються в терміналі в міру їх вилучення. Щоб було зрозуміло, параметри командного рядка, які ми використовували з tar для файлу .tar.bz2:

-x: витягти, отримати файли з файлу tar.
-v: докладно, список файлів, як вони розпаковуються.
-j: Bzip2, використовуйте bzip2, щоб розпакувати файл tar.
-f: файл, ім’я файлу tar, з яким ми хочемо, щоб tar працював.

Якщо ми перерахуємо файли в каталозі Download, ми побачимо, що створено інший каталог під назвою Guitar Songs.

Вибір куди розпакувати файли

Якщо ми хочемо розпакувати файли в інше місце, ніж поточний каталог, ми можемо вказати цільовий каталог за допомогою параметра -C (вказаний каталог).

tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/

Заглянувши в наш каталог Documents/Songs, ми побачимо, що каталог Guitar Songs створено.

  Як оновити до Linux Mint 20.2

Зауважте, що цільовий каталог має вже існувати, tar не створить його, якщо його немає. Якщо вам потрібно створити каталог і отримати tar файли в нього однією командою, ви можете зробити це наступним чином:

mkdir -p ~/Documents/Songs/Downloaded && tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/Downloaded/

Параметр -p (батьки) змушує mkdir створювати необхідні батьківські каталоги, забезпечуючи створення цільового каталогу.

Перегляд файлів tar перед їх розпакуванням

Поки що ми лише довірилися й витягли файли, які не побачили. Ви можете подивитися, перш ніж стрибнути. Ви можете переглянути вміст файлу tar, перш ніж розпакувати його, за допомогою параметра -t (список). Зазвичай зручно передавати вихід через команду less.

tar -tf ukulele_songs.tar.gz | less

Зверніть увагу, що нам не потрібно використовувати параметр -z для переліку файлів. Нам потрібно лише додати параметр -z, коли ми витягуємо файли з файлу .tar.gz. Так само нам не потрібен параметр -j для переліку файлів у файлі tar.bz2.

Прокручуючи вихідні дані, ми бачимо, що все у файлі tar зберігається в каталозі під назвою Ukulele Songs, і в цьому каталозі є файли та інші каталоги.

Ми бачимо, що каталог пісень укулеле містить каталоги під назвою Random Songs, Ramones і Possibles.

Щоб витягти всі файли з каталогу у файлі tar, скористайтеся такою командою. Зауважте, що шлях укладено в лапки, оскільки в шляху є пробіли.

tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/Ramones/"

Щоб розпакувати один файл, введіть шлях та ім’я файлу.

tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/023 - My Babe.odt"

Ви можете витягти виділені файли за допомогою символів підстановки, де * представляє будь-який рядок символів, а ? представляє будь-який окремий символ. Використання символів підстановки вимагає використання параметра –wildcards.

tar -xvz --wildcards -f ukulele_songs.tar.gz "Ukulele Songs/Possibles/B*"

Розпакування файлів без розпакування каталогів

Якщо ви не хочете, щоб структура каталогів у файлі tar була відтворена на вашому жорсткому диску, використовуйте параметр –strip-components. Для параметра –strip-components потрібен числовий параметр. Число показує, скільки рівнів каталогів ігнорувати. Файли з ігнорованих каталогів все ще витягуються, але структура каталогів не реплікується на вашому жорсткому диску.

  6 найкращих тем для значків для Linux

Якщо ми вказуємо –strip-components=1 у нашому прикладі tar-файлу, верхній каталог пісень укулеле у файлі tar не створюється на жорсткому диску. Файли та каталоги, які були б розпаковані в цей каталог, витягуються в цільовий каталог.

tar -xvzf ukulele_songs.tar.gz --strip-components=1

У нашому прикладі tar файлу є лише два рівні вкладеності каталогу. Отже, якщо ми використовуємо –strip-components=2, усі файли витягуються в цільовий каталог, а інші каталоги не створюються.

tar -xvzf ukulele_songs.tar.gz --strip-components=2

Якщо ви подивитеся на Linux сторінка людини ви побачите, що tar має бути хорошим кандидатом на звання «команди з найбільшою кількістю параметрів командного рядка». На щастя, щоб ми могли витягувати файли з файлів .tar.gz і tar.bz2 з гарним ступенем детального контролю, нам потрібно пам’ятати лише кілька з цих параметрів.