Когато изтегляте файлове от интернет, много често те са под формата на архив. Целта на този архив е да намали размера на изтеглянето, да намали броя на файловете и понякога да осигури допълнителна защита с помощта на пароли. Има много видове архиви, .tar, tar.gz, tar.bz2, zip, 7z. В тази публикация ще обсъдим zip архиви.
Zip е един от най-широко използваните архивни файлови формати, който поддържа компресиране на данни без загуба. Можете дори да разархивирате .zip файлове в Windows, които са създадени в Linux!
В повечето сценарии zip е наличен още с инсталирането на дистрибуцията, но ще ви покажем как можете да го инсталирате в случай, че липсва.
1. Инсталиране на unzip и zip на Ubuntu и Debian дистрибуции
За да използвате командите на Debian и Ubuntu дистрибуции, можете лесно да ги инсталирате с мениджъра на пакети apt:
$ sudo apt install unzip
$ sudo apt install zip
2. Инсталиране на unzip и zip на Fedora и Centos дистрибуции
При Fedora и Centos дистрибуции, можете да ги инсталирате по аналогичен начин, но с мениджъра на пакети yum:
$ sudo yum install unzip
$ sudo yum install zip
След като инсталацията приключи, можете да проверите пълния път до бинарния файл със следната команда:
$ which unzip
Ще получите изходен код подобен на:
$ /usr/bin/unzip
Това може да бъде полезно при отстраняване на проблеми, свързани с командата или когато искате да проверите версията, която изпълнявате.
Можете да проверите версията със следната команда:
$ /usr/bin/unzip -v
3. Създаване на zip архив в Linux
За да създадем zip архив от няколко файла, трябва да използваме следната команда:
$ zip backup.zip file1.txt file2.txt file3.txt
4. Разархивиране на zip архив в Linux
По подразбиране всички файлове и поддиректории се пресъздават в текущата директория. Лесно можем да разархивираме файла backup.zip в настоящата директория, със следната команда:
$ unzip backup.zip
В случай, че искаме да разархивираме файловете в друга директория, трябва да добавим опцията -d:
$ unzip -d /home/deltabg/new/dir backup.zip
По подразбиране разархивирането отпечатва имената на всички файлове, когато приключи.
Използвайте опцията -q, за да потиснете отпечатването на тези съобщения:
$ unzip -q backup.zip
5. Добавяне на файл към zip архив
Веднъж след като сте създали zip архив, можете лесно да добавите файл към него. Използвайте опцията -u:
$ zip -u backup.zip newfile.txt
6. Премахване на файл от zip архив
След като сте създали zip архив, винаги можете да премахнете или изтриете файл от него. За целта използвайте следната команда:
$ zip -d backup.zip newfile.txt
7. Показване на съдържанието на zip архив
За да видите съдържанието на zip файл, използвайте опцията -l:
$ unzip -l backup.zip
8. Преместване на файл в zip архив
Тази опция изтрива целевите файлове, след като създаде zip архив. Полезна е, в случай че имате малко дисково пространство на машината, но е и потенциално опасна и се препоръчва да се използва с опцията -T, за тестване на архива, преди да премахне всички входирани файлове.
$ zip -Tm backup.zip newfile.txt
Командата първо ще тества целостта на zip архива, за да се увери, че не е повреден. След това ще добави файла newfile.txt към архива, като същевременно ще изтрие оригиналния файл.
9. Рекурсивно архивиране на директории и файлове
Опцията -r се използва за рекурсивно включване на всички файлове и поддиректории в определената директория. Това означава, че всички файлове в директорията и нейните поддиректории ще бъдат добавени към zip архива.
$ zip -r backup.zip directory
10. Изключване на файл при архивиране
При създаване на zip архив, можете да изключите файл. Това става със следната команда:
$ zip -r dir.zip dir/ -x dir/file1.txt
Това ще генерира рекурсивен архив на директорията dir/, но ще изключи файла dir/file1.txt.
11. Изключване на файл при разархивиране
Когато не искате да изваждате даден файл от архива, можете да го направите по следния начин:
$ unzip dir.zip -x dir/file2.txt
По този начин файлът dir/file2.txt няма да бъде разархивиран.
Можете да използвате и следния пример, в случай че искате да изключите определен тип файлове:
$ unzip dir.zip -x "*.webp/*"
Всички файлове с разширение .webp, няма да бъдат извадени от архива.
12. Презаписване на zip файл
Понякога се налага да разархивирате един файл, на място където вече съществува. В този случай ще получите съобщение, дали искате да замените този файл.
[y]es, [n]o, [A]ll, [N]one, [r]ename
За да избегнете подобно съобщение, трябва да добавите опцията -o към unzip.
Когато стартирате командата unzip -o в Linux, тя ще извлече файловете от посочения zip архив и ще презапише всички съществуващи файлове със същото име в целевата директория, без да иска потвърждение.
Струва си да се отбележи, че опцията -o трябва да се използва с повишено внимание, тъй като потенциално може да презапише важни файлове и да причини загуба на данни. Винаги е добра идея да направите резервно копие на всички файлове, които планирате да презапишете, преди да изпълните тази команда.
13. Разархивиране на zip без презаписване
Опцията -n означава "никога не презаписва" и инструктира разархивирането да пропусне извличането на всички файлове, които вече съществуват в целевата директория.
$ unzip -n dir.zip
Това може да бъде полезно в ситуации, в които искате да извлечете само нови или актуализирани файлове от zip архив, без да презаписвате съществуващи файлове.
Въпреки това е важно да се отбележи, че ако използвате опцията -n и вече има съществуващи файлове със същото име в целевата директория, извличането на тези файлове от zip архива ще бъде пропуснато и няма да бъдете уведомени за това.
14. Създаване на zip файл защитен с парола
В случай, че архивът ви съдържа чувствителна информация или просто искате да го защитите с парола, можете да използвате следната команда:
$ zip -er dir.zip dir
Опцията -e позволява криптиране за вашия zip файл. След това ще бъдете попитани за паролата, с която искате да защитите файла.
15. Разархивиране на zip файл защитен с парола
Опцията -P, последвана от стойността на паролата, предоставя паролата, необходима за дешифриране на съдържанието на архива. Така че, когато стартирате командата unzip -P в Linux с правилната парола, тя ще извлече файловете от защитения с парола zip архив.
$ unzip -P password dir.zip
Струва си да се отбележи, че това не е най-сигурният подход, тъй като паролата ще бъде видима в обикновен текст за всеки, който има достъп до хронологията на командите. По-сигурен подход е да използвате защитен с парола файл или мениджър на пароли, за да съхраните паролата и да я въведете интерактивно, когато бъдете подканени при разархивиране.
В заключение, командите zip и unzip са мощни инструменти за работа с компресирани файлове в Linux. С помощта на тези команди потребителите могат лесно да архивират и разархивират файлове и директории, което улеснява прехвърлянето и споделянето на големи количества данни. Гъвкавостта и мощността на тези инструменти ги прави съществена част от инструментариума на всеки Linux потребител.