Як стискати та розпаковувати файли в 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> </шлях призначення для файлів/або/каталогу>
Наприклад, припустимо, у поточному каталозі є файл/каталог з назвою «/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
У ситуаціях, коли робиться спроба витягти файл, якого немає в архіві, команда надає зворотний зв'язок, відображаючи повідомлення про помилку «Не знайдено в архіві»:
$ tar -xf test_archive.tar.gz README
Перемикачі команди tar:
x: Використовується для вилучення архіву tar або конкретних файлів з архіву.
v: Відображає докладну інформацію або імена файлів під час обробки архіву.
f: Вказує tar, з якими файлами він повинен працювати.
t: Відображає список імен файлів, що містяться в архіві.
Висновок
У цьому підручнику ми продемонстрували, як стискати або витягувати файли за допомогою інструментів tar і gzip в Linux. Обидва інструменти корисні для стиснення та розпакування файлів і каталогів у вашій системі. Якщо ви використовуєте сервер Linux VPS, ви можете ефективно стискати та витягувати файли за допомогою цих утиліт. Якщо у вас є питання, не соромтеся їх задавати.
Blog