Articles

Jak Zip lub rozpakować pliki z terminala Linux

  • Dave McKay

    @TheGurkha

  • Zaktualizowano 28 maja 2019, 17:15 EDT
Linux Shell prompt
Fatmawati Achmad zaenuri/.com

pliki zip są uniwersalnym Archiwum powszechnie używane w systemach Windows, MacOS, a nawet Linux. Możesz utworzyć archiwum zip lub rozpakować pliki z jednego z popularnych poleceń terminala Linux.

Format skompresowanego archiwum ZIP

dzięki dominacji formatu ZIP w świecie Windows, pliki ZIP są prawdopodobnie najczęstszą formą skompresowanego archiwum na świecie.

While .smoła.pliki gz i tar. bz2 są powszechne w systemie Linux, użytkownicy systemu Windows prawdopodobnie wyślą ci archiwum w formacie ZIP. A jeśli chcesz zarchiwizować niektóre pliki i wysłać je do użytkownika systemu Windows, format ZIP będzie najłatwiejszym i najbardziej kompatybilnym rozwiązaniem dla wszystkich.

RELATED: How To Extract Files From a .smoła.gz lub .smoła.plik bz2 w systemie Linux

zip, Rozpakuj i inne narzędzia

możesz już wiedzieć, że systemy operacyjne Linux i Unix, takie jak macOS, mają narzędzia umożliwiające tworzenie plików ZIP i wyodrębnianie z nich plików, o nazwie zip I unzip. Ale istnieje cała rodzina powiązanych narzędzi, takich jak zipcloakzipdetailszipsplit I zipinfo.

Reklama

sprawdziliśmy niektóre dystrybucje Linuksa, aby sprawdzić, czy zawierają te narzędzia w standardowej instalacji. Wszystkie narzędzia były obecne w Ubuntu 19.04, 18.10 i 18.04. Byli również obecni w Manjaro 18.04. Fedora 29 zawiera zip I unzip, ale żadne z innych narzędzi i tak było również w przypadku CentOS.

aby zainstalować brakujące elementy na Fedorze 29, użyj następującego polecenia:

sudo dnf install perl-IO-Compress

polecenie instalacji zip Dla Fedory

aby zainstalować brakujące elementy na CentOS 7, Użyj następującego polecenia:

sudo yum install perl-IO-Compress

polecenie ZIP install w CentOS

Reklama

Jeśli brakuje któregokolwiek z narzędzi ZIP w dystrybucji Linuksa, która nie została wymieniona powyżej, użyj narzędzia do zarządzania pakietami tej dystrybucji Linuksa, aby zainstalować wymagany pakiet.

Jak utworzyć plik ZIP za pomocą polecenia zip

aby utworzyć plik ZIP, musisz podaćzip nazwę pliku archiwum i pliki, które mają być w nim zawarte. Nie musisz dodawać”.zip ” rozszerzenie do nazwy archiwum, ale nie szkodzi, jeśli to zrobisz.

aby utworzyć plik o nazwie source_code.zip zawierający wszystkie pliki kodu źródłowego C i pliki nagłówkowe w bieżącym katalogu, należy użyć tego polecenia:

zip source_code *.c *.h

polecenie zip w oknie terminala

każdy plik jest wyświetlany jako dodano. Pokazana jest nazwa pliku i ilość kompresji, która została osiągnięta na tym pliku.

wyjście z polecenia zip w oknie terminala

Reklama

Jeśli spojrzysz na nowe archiwum ZIP, zobaczysz, że „.rozszerzenie pliku zip” zostało dodane automatycznie przez zip.

ls -l source_code.zip

ls na archiwum zip w oknie terminala

Jeśli nie chcesz widzieć wyjścia z zip podczas tworzenia pliku ZIP, użyj -q opcja div > (cichy).

zip -q source_code *.c *.h

-opcja Q quiet w oknie terminala

w tym katalogi w plikach ZIP

aby dołączyć podkatalogi do pliku ZIP, użyj opcji-r (recursive) i dołącz nazwę pliku.podkatalog w wierszu poleceń. Aby utworzyć plik ZIP jak wcześniej, a także zawierać podkatalog archiwum, użyj tego polecenia.

zip -r -q source_code archive/ *.c *.h

-r opcja rekurencyjna w oknie terminala

aby być uważnym dla osoby, która będzie rozpakowywać pliki z tworzonego pliku ZIP, często uprzejme jest tworzenie plików ZIP z plikami wewnątrz nich zawartymi w katalogu. Gdy osoba, która otrzymuje plik ZIP, rozpakowuje go, wszystkie pliki są starannie umieszczane w katalogu na komputerze.

Reklama

w poniższym poleceniu archiwizujemy katalogwork I wszystkie podkatalogi. Zauważ, że polecenie to jest wydawane z katalogu nadrzędnego katalogu work.

zip -r -q source_code work/

zapinanie katalogu roboczego w oknie terminala

Ustawianie poziomu kompresji

Możesz ustawić, ile kompresji zostanie zastosowana do plików, gdy zostaną dodane do archiwum ZIP. Zakres wynosi od 0 do 9, przy czym 0 nie oznacza żadnej kompresji. Im wyższa kompresja, tym dłużej trwa tworzenie pliku ZIP. W przypadku plików ZIP o niewielkich rozmiarach różnica czasu nie stanowi znaczącej kary. Ale wtedy, dla skromnych rozmiarów plików ZIP, domyślna kompresja (poziom 6) jest prawdopodobnie wystarczająco dobra.

aby uzyskać zip aby użyć określonego poziomu kompresji, przekaż numer jako opcję w wierszu poleceń, z „-„, w ten sposób:

zip -0 -r -q source_code work/

-0 opcja kompresji w oknie terminala

domyślnym poziomem kompresji jest 6. Nie ma potrzeby podawania opcji -6, ale nie zaszkodzi, jeśli to zrobisz.

zip -r -q source_code work/

poziom kompresji 6 w oknie terminala

maksymalny poziom kompresji to poziom 9.

zip -9 -r -q source_code work/

-9 kompresja w oknie terminala

Reklama

przy wyborze plików i katalogów archiwizowanych tutaj, różnica między kompresją bez (poziom 0) a kompresją domyślną (poziom 6) wynosi 400K. Różnica między domyślną kompresją a najwyższym poziomem kompresji (poziom 9) wynosi tylko 4K.

To może nie wydawać się zbyt wiele, ale w przypadku archiwów zawierających setki, a nawet tysiące plików, niewielka ilość dodatkowej kompresji na plik spowodowałaby oszczędność miejsca.

dodawanie haseł do plików ZIP

dodawanie haseł do plików ZIP jest łatwe. Użyj opcji -e (szyfrowanie), a zostaniesz poproszony o wprowadzenie hasła i ponowne jego wprowadzenie w celu weryfikacji.

zip -e -r -q source_code work/

dodawanie haseł do plików zip w oknie terminala

jak rozpakować plik ZIP za pomocą polecenia rozpakuj

aby wyodrębnić pliki z pliku ZIP, użyj polecenia Rozpakuj i podaj nazwę pliku ZIP. Pamiętaj, że musisz podać”.zip ” rozszerzenie.

unzip source_code.zip

polecenie rozpakuj w oknie terminala

Reklama

Po rozpakowaniu plików są one wyświetlane w oknie terminala.

wyjście rozpakowania w oknie terminala

pliki ZIP nie zawierają szczegółów własności pliku. Wszystkie wyodrębnione pliki mają ustawionego właściciela na użytkownika, który je wyodrębnia.

podobnie jakzipunzip ma opcję-q (cichy), dzięki czemu nie musisz widzieć listy plików podczas wyodrębniania plików.

unzip -q source_code.zip

rozpakuj opcję-q w oknie terminala

Wyodrębnianie plików do katalogu docelowego

aby pliki zostały rozpakowane w określonym katalogu, użyj opcji-d (katalog), i podaj ścieżkę do katalogu, do którego chcesz rozpakować archiwum.

unzip -q source_code.zip -d ./development

rozpakuj do katalogu docelowego w oknie terminala

Wyodrębnij zabezpieczone hasłem pliki ZIP

Jeśli plik ZIP został utworzony z hasłem,unzip poprosi Cię o hasło. Jeśli nie podasz poprawnego hasła, unzip nie wyodrębni plików.

unzip -q source_code.zip

rozpakuj polecenie hasło w oknie terminala

Reklama

Jeśli nie dbasz o to, że Twoje hasło jest widoczne dla innych—ani o to, że jest przechowywane w historii poleceń—możesz podać hasło w wierszu poleceń za pomocą-P (hasło) opcja. (Musisz użyć dużej litery ” P.”)

unzip -P fifty.treacle.cutlass -q source_code.zip

rozpakowanie z opcją hasła w oknie terminala

wykluczanie plików

Jeśli nie chcesz wyodrębniać określonego pliku lub grupy plików, użyj opcji-x (wyklucz). W tym przykładzie chcemy wyodrębnić wszystkie pliki poza tymi końcowymi na”.H ” rozszerzenie.

unzip -q source_code.zip -x *.h

rozpakuj opcję wykluczania w oknie terminala

nadpisywanie plików

Załóżmy, że wyodrębniłeś archiwum, ale przez pomyłkę usunąłeś kilka wyodrębnionych plików.

Reklama

szybką poprawką byłoby ponowne rozpakowanie plików. Ale jeśli spróbujesz rozpakować plik ZIP w tym samym katalogu, co poprzednio, unzip poprosi Cię o decyzję dotyczącą nadpisania plików. Oczekuje jednej z następujących odpowiedzi.

oprócz odpowiedzir (zmiana nazwy), w odpowiedziach tych rozróżniana jest wielkość liter.

  • y: tak, Nadpisz ten plik
  • n: Nie, Nie nadpisuj tego pliku
  • a: wszystkie, Nadpisz wszystkie pliki
  • N: brak, Nadpisz żaden z plików
  • R: Zmień nazwę, rozpakuj ten plik, ale nadaj mu nową nazwę. Zostaniesz poproszony o nową nazwę.

Nadpisz monity w oknie terminala

, aby wymusićunzip aby nadpisać istniejące pliki, użyj opcji-o (Nadpisz).

unzip -o -q source_code.zip

opcja nadpisania w oknie terminala

najskuteczniejszym sposobem zastąpienia brakujących plików byłoby rozpakowanieunzip tylko plików z archiwum, które nie znajdują się w katalogu docelowym. Aby to zrobić, użyj opcji-n (nigdy nie nadpisuj).

unzip -n source_code.zip

rozpakuj za pomocą opcji-n nigdy nie nadpisuj w oknie terminala

przeglądając plik ZIP

często przydatne i pouczające jest zobaczenie listy plików wewnątrz pliku ZIP przed rozpakowaniem go. Możesz to zrobić za pomocą opcji-l (list archive). Jest on przesyłany przez less, aby wyjście było możliwe do zarządzania.

unzip -l source_code.zip | less

rozpakuj opcję listy w oknie terminala

Reklama

wyjście pokazuje katalogi i pliki w pliku ZIP, ich długość oraz czas i datę dodania do archiwum. Naciśnij „q”, aby zakończyć pracę z less.

wyświetl wyjście archiwum w oknie terminala

istnieją inne sposoby zaglądania do pliku ZIP, które dają różne rodzaje informacji, jak zobaczymy.

Dodaj hasło za pomocą polecenia zipcloak

jeśli utworzyłeś plik ZIP, ale zapomniałeś dodać hasło, co możesz zrobić? Możesz szybko dodać hasło do pliku ZIP za pomocą poleceniazipcloak. Podaj nazwę pliku ZIP w wierszu poleceń. Zostaniesz poproszony o podanie hasła. Musisz zweryfikować hasło, wprowadzając je po raz drugi.

zipcloak source_code.zip

zipcloak w oknie terminala

Wyświetl szczegóły Pliku za pomocą polecenia zipdetails

poleceniezipdetails pokaże Ci wiele informacji dotyczących pliku ZIP. Jedynym sensownym sposobem na obsĹ 'ugÄ ™ iloĹ”ci wyjĹ”cia, ktĂłre moĹźe daÄ ‡ to polecenie, jest przepuszczenie go przez less .

zipdetails source_code.zip | less

polecenie zipdetails w oknie terminala

Reklama

należy pamiętać, że informacje będą zawierać nazwy plików, nawet jeśli plik ZIP jest chroniony hasłem. Ten typ informacji jest przechowywany w pliku ZIP jako metadane i nie jest częścią zaszyfrowanych danych.

wyjście zipdetails w oknie terminala

Szukaj wewnątrz pliku za pomocą polecenia Zipgrep

poleceniezipgrep umożliwia wyszukiwanie w plikach w pliku ZIP. W poniższym przykładzie chcemy wiedzieć, które pliki w pliku ZIP mają tekst ” keyval.h ” w nich.

zipgrep keyval.h source_code.zip

polecenie zipgrep w oknie terminala

widzimy, że plikislang.c Igetval.c zawierają ciąg „keyval.h”.Możemy również zobaczyć, że istnieją dwie kopie każdego z tych plików w różnych katalogach w pliku ZIP.

Wyświetl informacje za pomocą polecenia zipinfo

polecenie zipinfo daje Ci kolejny sposób na zajrzenie do pliku ZIP. Jak poprzednio, przepuszczamy wyjście przez less.

zipinfo source_code.zip | less

polecenie zipinfo w oknie terminala

od lewej do prawej wyjście pokazuje:

  • uprawnienia do pliku
  • wersja narzędzia służąca do utworzenia pliku ZIP
  • oryginalny Rozmiar pliku
  • deskryptor pliku (opisany poniżej)
  • metoda kompresji (deflacja, w tym przypadku)
  • znacznik danych i czasu
  • nazwa pliku i dowolnego katalogu
Reklama

plik deskryptor składa się z dwóch znaków. Pierwszy znak będzie „t” lub „b”, aby wskazać plik tekstowy lub binarny. Jeśli jest to wielka litera, plik jest zaszyfrowany. Drugi znak może być jednym z czterech znaków. Ten znak reprezentuje rodzaj metadanych zawartych w tym pliku: brak, Rozszerzony nagłówek lokalny,” Dodatkowe pole ” lub oba te elementy.

  • -: jeśli nie istnieje, znak będzie myślnikiem
  • l: jeśli istnieje Rozszerzony nagłówek lokalny, ale nie ma dodatkowego pola
  • x: jeśli nie ma rozszerzonego nagłówka lokalnego, ale istnieje dodatkowe pole
  • X: jeśli istnieje Rozszerzony nagłówek lokalny i jest Dodatkowe pole

wyjście zipinfo w oknie terminala

podziel plik za pomocą polecenia zipsplit

Jeśli chcesz wysłać plik ZIP do kogoś innego, ale istnieją ograniczenia rozmiaru lub problemy z transmisją pliku, możesz użyć zipsplit polecenie pozwalające podzielić oryginalny plik zip na zestaw mniejszych plików ZIP.

opcja-n (size) pozwala ustawić maksymalny rozmiar dla każdego nowego pliku ZIP. W tym przykładzie dzielimy plik source_code.zip. Nie chcemy, aby nowy plik ZIP był większy niż 100 KB (102400 bajtów).

zipsplit -n 102400 source_code.zip

polecenie zipsplit w oknie terminala

Reklama

wybrany rozmiar nie może być mniejszy niż rozmiar żadnego z plików w pliku ZIP.

za pomocą tych poleceń możesz tworzyć własne pliki ZIP, rozpakowywać otrzymane pliki ZIP i wykonywać na nich różne inne operacje bez opuszczania terminala Linux.

Dave McKay
Dave McKay po raz pierwszy użył komputerów, gdy taśma perforowana była w modzie i od tego czasu programuje. Po ponad 30 latach pracy w branży IT, obecnie jest dziennikarzem technologicznym na pełny etat. W trakcie swojej kariery pracował jako niezależny Programista, Kierownik międzynarodowego zespołu programistycznego, kierownik projektów usług IT, a ostatnio jako Inspektor Ochrony Danych. Dave jest ewangelistą Linuksa i zwolennikiem open source.Przeczytaj cały Biogram ”