Як заархівувати або розпакувати файли з терміналу Linux

ZIP-файли - це універсальний архів, який зазвичай використовується в системах Windows, macOS і навіть Linux. Ви можете створити zip-архів або розпакувати файли з одного за допомогою деяких загальних команд терміналу Linux.

Формат архівного файлу ZIP

Завдяки домінуванню формату ZIP у сфері Windows, ZIP-файли є, мабуть, найпоширенішою формою стисненого архіву у світі.

Хоча файли .tar.gz та tar.bz2 поширені в Linux, користувачі Windows, ймовірно, надішлють вам архів у форматі ZIP. І якщо ви хочете заархівувати деякі файли та надіслати їх користувачеві Windows, формат ZIP буде найпростішим та найбільш сумісним рішенням для всіх.

ПОВ’ЯЗАНІ: Як витягти файли з файлу .tar.gz або .tar.bz2 у Linux

zip, unzip та інші утиліти

Ви вже можете знати, що Linux та Unix-подібні операційні системи, такі як macOS, мають інструменти, що дозволяють створювати ZIP-файли та витягувати з них файли, викликані zipта unzip. Але є ціле сімейство пов'язаних комунальних послуг , таких як zipcloak, zipdetails, zipsplit, і zipinfo.

Ми перевірили деякі дистрибутиви Linux, щоб побачити, чи включили вони ці утиліти до стандартної інсталяції. Усі утиліти були присутні в Ubuntu 19.04, 18.10 та 18.04. Вони також були присутні в Манджаро 18.04. Fedora 29 включала zipі unzip, але жодна з інших утиліт, і це також стосувалося CentOS.

Щоб встановити відсутні елементи у Fedora 29, використовуйте таку команду:

sudo dnf встановити perl-IO-Compress

Щоб встановити відсутні елементи на CentOS 7, використовуйте таку команду:

sudo yum встановити perl-IO-Compress

Якщо жодна з утиліт zip відсутня в дистрибутиві Linux, про який не згадувалося вище, скористайтеся інструментом управління пакунками цього дистрибутива Linux, щоб встановити необхідний пакет.

Як створити ZIP-файл за допомогою команди zip

Щоб створити ZIP-файл, потрібно вказати zipназву архівного файлу та файли, які до нього слід включити. Вам не потрібно додавати розширення “.zip” до імені архіву, але якщо ви це зробите, це не зашкодить.

Щоб створити файл із назвою, source_code.zipщо містить усі файли вихідного коду C та файли заголовків у поточному каталозі, скористайтеся цією командою:

zip source_code * .c * .h

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

Якщо ви подивитесь на новий архів ZIP, то побачите, що розширення файлу .zip було додано автоматично zip.

ls -l source_code.zip

Якщо ви не хочете бачити вихідні дані із zipстворення ZIP-файлу, використовуйте -qопцію (тихо).

zip -q source_code * .c * .h

Включення каталогів до ZIP-файлів

Щоб включити підкаталоги до файлу ZIP, скористайтесь -rопцією (рекурсивно) та включіть ім’я підкаталогу в командний рядок. Щоб створити ZIP-файл, як і раніше, а також включити підкаталог архіву, використовуйте цю команду.

zip -r -q Архів вихідних кодів / * .c * .h

Щоб бути уважним до людини, яка буде витягувати файли із ZIP-файлу, який ви створюєте, часто ввічливо створювати ZIP-файли з файлами всередині нього, що містяться в каталозі. Коли людина, яка отримує файл ZIP, витягує його, усі файли акуратно поміщаються в каталог на своєму комп’ютері.

У наступній команді ми збираємося архівувати workкаталог і всі підкаталоги. Зверніть увагу , що ця команда випускаються з батьківського каталогу в workпапці.

zip -r -q вихідний_ код роботи /

Встановлення рівня стиснення

Ви можете встановити, наскільки стиснення застосовуватиметься до файлів у міру їх додавання до архіву ZIP. Діапазон від 0 до 9, при цьому 0 взагалі не стискає. Чим вище стиск, тим довше потрібно створення ZIP-файлу. Для файлів ZIP розміру невеликого розміру різниця в часі не є суттєвим покаранням. Але тоді для файлів ZIP розміру невеликого розміру стиснення за замовчуванням (рівень 6), мабуть, і так достатньо.

Щоб zipскористатися певним рівнем стиснення, передайте номер як параметр у командному рядку, з символом «-», наприклад:

zip -0 -r -q вихідний_ код роботи /

За замовчуванням рівень стиснення - 6. Немає необхідності надавати цю -6опцію, але це не зашкодить, якщо ви це зробите.

zip -r -q вихідний_ код роботи /

Максимальний рівень стиснення - рівень 9.

zip -9 -r -q вихідний_ код роботи /

Якщо виділити файли та каталоги, які тут архівуються, різниця між відсутністю стиснення (рівень 0) та стисненням за замовчуванням (рівень 6) становить 400 КБ. Різниця між типовим стисненням та найвищим рівнем стиснення (рівень 9) становить лише 4K.

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

Додавання паролів до ZIP-файлів

Додавання паролів до ZIP-файлів дуже просто. Скористайтеся -eопцією (зашифрувати), і вам буде запропоновано ввести свій пароль і повторно ввести його для підтвердження.

zip -e -r -q вихідний_ код роботи /

Як розпакувати ZIP-файл за допомогою команди unzip

Щоб витягти файли з ZIP-файлу, використовуйте команду unzip та вкажіть ім'я ZIP-файлу. Зверніть увагу , що ви робите необхідність надання «.zip» розширення.

розпакуйте source_code.zip

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

ZIP-файли не містять даних про право власності на файли. Усі файли, які витягуються, мають власника, встановленого користувачем, який їх витягує.

Так само, як і zip, unzip має -q(тиху) опцію, так що вам не потрібно бачити перелік файлів під час вилучення файлів.

unzip -q source_code.zip

Витяг файлів до цільового каталогу

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

unzip -q source_code.zip -d ./development

Витягніть захищені паролем ZIP-файли

Якщо ZIP-файл було створено з паролем, unzipви запитаєте пароль. Якщо ви не вкажете правильний пароль,  unzipфайли не витягуватимуться.

unzip -q source_code.zip

Якщо ви не дбаєте про те, щоб ваш пароль бачили інші - і не про те, щоб він зберігався у вашій історії команд - ви можете вказати пароль у командному рядку з -Pопцією (пароль). (Ви повинні використовувати велику літеру "П.")

розпакувати -P fifty.treacle.cutlass -q source_code.zip

Без файлів

Якщо ви не хочете витягувати певний файл або групу файлів, використовуйте -xопцію (виключити). У цьому прикладі ми хочемо витягти всі файли, крім тих, що закінчуються розширенням “.h”.

розпакуйте -q source_code.zip -x * .h

Заміна файлів

Припустимо, ви витягли архів, але кілька вилучених файлів видалили помилково.

Швидким виправленням цього було б ще раз витягти файли. Але якщо ви спробуєте витягти файл ZIP у тому ж каталозі, що і раніше, вам unzipбуде запропоновано рішення щодо перезапису файлів. Очікується одна з наступних відповідей.

Окрім відповіді r(перейменувати), ці відповіді чутливі до регістру.

  • y: Так, перезаписати цей файл
  • n: Ні, не перезаписуйте цей файл
  • В: Усі, перезапишіть усі файли
  • N: Немає, перезапишіть жоден файл
  • r: Перейменуйте, витягніть цей файл, але дайте йому нову назву. Вам буде запропоновано ввести нове ім’я.

Щоб змусити unzipперезаписати будь-які існуючі файли, використовуйте -oопцію (перезаписати).

розпакуйте -o -q source_code.zip

Найефективнішим способом замінити відсутні файли було б unzipлише вилучення будь-яких файлів з архіву, які відсутні в цільовому каталозі. Для цього скористайтеся -nопцією (ніколи не перезаписувати).

розпакувати -n source_code.zip

Заглянувши всередину ZIP-файлу

Часто корисно та повчально переглянути список файлів у ZIP-файлі, перш ніж його витягувати. Ви можете зробити це за допомогою -lопції (список архівів). Він трубопровідний, lessщоб зробити вихід керованим.

розпакувати -l source_code.zip | менше

Вихідні дані показують каталоги та файли в ZIP-файлі, їх тривалість, час та дату їх додавання до архіву. Натисніть “q”, щоб вийти з less.

Як ми побачимо, є й інші способи зазирнути всередину файлу ZIP, який надає різні типи інформації.

Додайте пароль за допомогою команди zipcloak

Якщо ви створили ZIP-файл, але забули додати пароль, що ви можете зробити? Ви можете швидко додати пароль до ZIP-файлу за допомогою zipcloakкоманди. Передайте ім'я ZIP-файлу в командний рядок. Вам буде запропоновано ввести пароль. Вам потрібно підтвердити пароль, ввівши його вдруге.

zipcloak source_code.zip

Перегляд деталей файлу за допомогою команди zipdetails

zipdetailsКоманда покаже вам багато інформації про фото ZIP. Єдиний розумний спосіб обробляти обсяг виводу, який ця команда може дати, - це прокласти його less.

zipdetails source_code.zip | менше

Зверніть увагу, що інформація включатиме назви файлів, навіть якщо ZIP-файл захищений паролем. Цей тип інформації зберігається у файлі ZIP як метадані та не є частиною зашифрованих даних.

Шукайте всередині файлу за допомогою команди zipgrep

zipgrepКоманда дозволяє здійснювати пошук в файлах в ZIP - файл. У наступному прикладі ми хочемо знати, які файли в ZIP-файлі містять текст “keyval.h”.

zipgrep keyval.h source_code.zip

Ми можемо бачити , що файли slang.cі getval.cмістять рядок «keyval.h» Ми також можемо бачити , що є дві копії кожного з цих файлів в різних каталогах в файлі ZIP.

Перегляд інформації за допомогою команди zipinfo

zipinfoКоманда дає вам ще один спосіб виглядати всередині ZIP - файл. Як і раніше, ми передаємо вихід через less.

zipinfo source_code.zip | менше

Зліва направо на виході видно:

  • Дозвіл на файл
  • Версія інструменту, що використовується для створення ZIP-файлу
  • Розмір оригінального файлу
  • Дескриптор файлу (описаний нижче)
  • Метод стиснення (дефляція, в даному випадку)
  • Дані та позначка часу
  • Ім'я файлу та будь-який каталог

Дескриптор файлу складається з двох символів. Першим символом буде "t" або "b" для позначення текстового або двійкового файлу. Якщо це велика літера, файл зашифрований. Другий символ може бути одним із чотирьох символів. Цей символ вказує, який тип метаданих включено для цього файлу: жоден, розширений локальний заголовок, «зайве поле» або обидва.

  • -: Якщо жодне з них не існує, символ буде дефісом
  • l: якщо є розширений локальний заголовок, але немає додаткового поля
  • x: якщо немає розширеного локального заголовка, але є додаткове поле
  • X: якщо є розширений локальний заголовок і є додаткове поле

Розділіть файл за допомогою команди zipsplit

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

Параметр -n(розмір) дозволяє встановити максимальний розмір для кожного з нових ZIP-файлів. У цьому прикладі ми розділяємо source_code.zipфайл. Ми не хочемо, щоб будь-який з нових ZIP-файлів перевищував 100 КБ (102400 байт).

zipsplit -n 102400 source_code.zip

Вибраний вами розмір не може бути меншим за розмір будь-якого з файлів у ZIP-файлі.

За допомогою цих команд ви можете створювати власні ZIP-файли, розпаковувати отримані ZIP-файли та виконувати різні інші операції з ними, не виходячи з терміналу Linux.