Spakowanie plików w systemie Linux na wiele odmian i jak z nich korzystać

Niektórzy z nas kompresują pliki w systemach Unix i Linux od wielu dziesięcioleci - aby zaoszczędzić trochę miejsca na dysku i spakować pliki do archiwizacji. Mimo to istnieje kilka interesujących odmian zipowania, których nie wszyscy próbowaliśmy. Dlatego w tym poście przyjrzymy się standardowemu kompresowaniu i rozpakowywaniu, a także innym interesującym opcjom kompresowania.

[Dwuminutowe wskazówki dotyczące systemu Linux: dowiedz się, jak opanować wiele poleceń systemu Linux w tych 2-minutowych samouczkach wideo]

Podstawowe polecenie zip

Najpierw spójrzmy na podstawowe zamek błyskawiczny Komenda. Korzysta z tego samego algorytmu kompresji co gzip, ale jest kilka ważnych różnic. Po pierwsze, polecenie gzip służy tylko do kompresji pojedynczego pliku, w którym zip może zarówno kompresować pliki, jak i łączyć je w archiwum. Po drugie, polecenie gzip zamyka „w miejscu”. Innymi słowy, pozostawia skompresowany plik - nie oryginalny plik obok skompresowanej kopii. Oto przykład gzip w pracy:

$ gzip onefile $ ls -l -rw-rw-r-- 1 shs shs 10514 15 stycznia 13 13:13 onefile.gz 

A oto zip. Zauważ, że to polecenie wymaga podania nazwy spakowanego archiwum, w którym gzip po prostu używa oryginalnej nazwy pliku i dodaje rozszerzenie .gz.

$ zip twofiles.zip plik * dodawanie: plik1 (deflowane 82%) dodawanie: plik2 (deflowane 82%) $ ls -l -rw-rw-r-- 1 shs shs 58021 15 stycznia 15 13:25 plik1 -rw-rw- r-- 1 shs shs 58933 15 stycznia 13 13:34 file2 -rw-rw-r-- 1 shs shs 21289 15 stycznia 13:35 twofiles.zip 

Zauważ też, że oryginalne pliki nadal tam są.

Ilość zaoszczędzonego miejsca na dysku (tj. Uzyskany stopień kompresji) będzie zależeć od zawartości każdego pliku. Różnica w poniższym przykładzie jest znaczna.

$ zip mybin.zip ~ / bin / * sumowanie: bin / 1 (deflowane 26%) dodawanie: bin / append (deflowane 64%) dodawanie: bin / BoD_meeting (deflowane 18%) dodawanie: bin / cpuhog1 (deflowane 14%) dodawanie: bin / cpuhog2 (przechowywane 0%) dodawanie: bin / ff (deflowane 32%) dodawanie: bin / file.0 (deflowane 1%) dodawanie: bin / loop (deflowane 14%) dodawanie: bin / notes (deflowane 23 %) dodawanie: bin / wzory (przechowywane 0%) dodawanie: bin / runme (przechowywane 0%) dodawanie: bin / tryme (deflowane 13%) dodawanie: bin / tt (deflowane 6%) 

Polecenie rozpakowania

The rozsunąć suwak polecenie odzyska zawartość z pliku zip i, jak można się spodziewać, pozostaw plik zip nienaruszony, podczas gdy podobne polecenie gunzip pozostawiłoby tylko plik nieskompresowany.

$ unzip twofiles.zip Archiwum: twofiles.zip pompowanie: plik1 pompowanie: plik2 $ ls -l -rw-rw-r-- 1 shs shs 58021 15.01.2013 plik1 -rw-rw-r-- 1 shs shs 58933 15 stycznia 13:34 plik 2 -rw-rw-r-- 1 shs shs 21289 15 stycznia 15 13:35 twofiles.zip 

Polecenie zipcloak

The zamek błyskawiczny polecenie szyfruje plik zip, monitując o dwukrotne wprowadzenie hasła (aby nie dopuścić do „grubego palca”) i pozostawia plik na miejscu. Możesz oczekiwać, że rozmiar pliku będzie się nieco różnić od oryginału.

$ zipcloak twofiles.zip Wprowadź hasło: Sprawdź hasło: szyfrowanie: plik1 szyfrowanie: plik2 $ ls -l razem 204 -rw-rw-r-- 1 shs shs 58021 15 stycznia 15 13:25 plik1 -rw-rw-r-- 1 shs shs 58933 15 sty 13 13:34 plik2 -rw-rw-r-- 1 shs shs 21313 15 stycznia 13:46 twofiles.zip <== slightly larger than unencrypted version 

Pamiętaj, że oryginalne pliki nadal są tam niezaszyfrowane.

Polecenie zipdetails

The zipdetails polecenie pokaże ci szczegóły - a los szczegółowych informacji o spakowanym pliku, prawdopodobnie o wiele więcej niż chcesz. Mimo, że patrzymy na zaszyfrowany plik, zipdetails wyświetla nazwy plików wraz z datami modyfikacji plików, informacjami o użytkownikach i grupach, danymi dotyczącymi długości plików itp. Pamiętaj, że są to „metadane”. Nie widzimy zawartości plików.

$ zipdetails twofiles.zip 0000 LOCAL HEADER # 1 04034B50 0004 Wyodrębnij Zip Spec 14 '2.0' 0005 Wyodrębnij OS 00 'MS-DOS' 0006 Flaga ogólnego przeznaczenia 0001 [Bit 0] 1 'Szyfrowanie' [Bity 1-2] 1 'Maksymalnie Kompresja '0008 Metoda kompresji 0008' Deflated '000A Last Mod Time 4E2F6B24' Wt 15 stycznia25 13:25:08 2019 '000E CRC F1B115BD 0012 Skompresowana długość 00002904 0016 Nieskompresowana długość 0000E2A5 001A Długość nazwy pliku 0005 001C Dodatkowa długość 001C 001E Plik nazwa pliku1' 0023 Dodatkowy identyfikator # 0001 5455 „UT: Rozszerzony znacznik czasu” 0025 Długość 0009 0027 Flagi „03 dostęp do modów” 0028 Mod Czas 5C3E2584 „Wt 15.0125:08 2019 '002C Czas dostępu 5C3E27BB' Wt 15 stycznia 34.34:35 2019 '0030 Extra ID # 0002 7875' ux: Unix Extra Type 3 '0032 Długość 000B 0034 Wersja 01 0035 UID Rozmiar 04 0036 UID 000003E8 003A GID Rozmiar 04 003B GID 000003E8 003F PAYLOAD 2943 LOCAL HEADER # 2 04034B50 2947 Extract Zip Spec 14' 2.0 „2948 Wyodrębnij OS 00„ MS-DOS ”2949 Flaga ogólnego zastosowania 0001 [Bit 0] 1„ Szyfrowanie ”[Bity 1-2] 1„ Maksymalna kompresja ”294B C Metoda kompresji 0008 'Deflated' 294D Last Mod Time 4E2F6C56 'Wt 15.013434:44 2019' 2951 CRC EC214569 2955 Skompresowana długość 00002913 2959 Nieskompresowana długość 0000E635 295D Długość nazwy pliku 0005 295F Dodatkowa długość 001C 2961 Nazwa pliku '2' 2966 Dodatkowy identyfikator # 0001 5455 „UT: Rozszerzony znacznik czasu” 2968 Długość 0009 296A Flagi „03 dostęp do modów” 296B Mod Czas 5C3E27C4 „Wt 15 stycznia3434:44 2019 '296F Czas dostępu 5C3E27BD' Wt 15 stycznia3434:37 ​​2019 '2973 Extra ID # 0002 7875 'ux: Unix Extra Type 3' 2975 Długość 000B 2977 Wersja 01 2978 UID Rozmiar 04 2979 UID 000003E8 297D GID Rozmiar 04 297E GID 000003E8 2982 PAYLOAD 5295 CENTRAL HEADER # 1 02014B50 5299 Utworzono Zip Spec 1E '3.0' 529A Utworzono OS 03 „Unix” 529B Wyodrębnij Zip Spec 14 „2.0” 529C Wyodrębnij OS 00 „MS-DOS” 529D Flaga ogólnego przeznaczenia 0001 [Bit 0] 1 „Szyfrowanie” [Bity 1-2] 1 „Maksymalna kompresja” 529F Metoda kompresji 0008 'Deflated' 52A1 Last Mod Time 4E2F6B24 'Wt 15 stycznia25 13:25:08 2019' 52A5 CRC F1B115BD 52A9 Skompresowana długość 00002904 52AD Uncompr essed Długość 0000E2A5 52B1 Długość nazwy pliku 0005 52B3 Dodatkowa długość 0018 52B5 Długość komentarza 0000 52B7 Początek dysku 0000 52B9 At Atrybuty pliku 0001 [bit 0] 1 Dane tekstowe 52BB Atrybuty pliku Ext 81B40000 52BF Lokalne przesunięcie nagłówka 00000000 52C3 Nazwa pliku „plik1” 52C8 Dodatkowy identyfikator # 0001 5455 „UT: Rozszerzony znacznik czasu” 52CA Długość 0005 52CC Flagi „03 dostęp do modów” 52CD Mod Czas 5C3E2584 „Wt 15 stycznia25 13:25:08 2019 '52D1 Extra ID # 0002 7875' ux: Unix Extra Type 3 '52D3 Długość 000B 52D5 Wersja 01 52D6 UID Rozmiar 04 52D7 UID 000003E8 52DB GID Rozmiar 04 52DC GID 000003E8 52E0 CENTRAL HEADER # 2 02014B50 52E4 Utworzono Zip Spec 1E '3.0' 52E5 Utworzono OS 03 'Unix' 52E6 Wyodrębnij Zip Spec 14 '2.0' 52E7 Wyodrębnij OS 00 „MS-DOS” 52E8 Flaga ogólnego przeznaczenia 0001 [bit 0] 1 „Szyfrowanie” [bity 1-2] 1 „Maksymalna kompresja” Metoda kompresji 52EA 0008 „Deflated” 52EC Last Mod Time 4E2F6C56 ”Wt 15 stycznia 13:34:44 2019 '52F0 CRC EC214569 52F4 Długość skompresowana 00002913 52F8 Długość nieskompresowana 0000E635 52FC Długość nazwy pliku 0005 52FE Dodatkowa długość 0018 5300 Długość komentarza 0000 5302 Początek dysku 0000 5304 Atrybuty pliku int 0001 [bit 0] 1 Dane tekstowe 5306 Atrybuty pliku ext 81B40000 530A Lokalne przesunięcie nagłówka 00002943 530E Nazwa pliku „file2” 5313 Dodatkowy identyfikator # 0001 5455 „UT: Rozszerzony znacznik czasu” 5315 Długość 0005 5317 Flagi '03 dostęp do modów '5318 Mod Czas 5C3E27C4' Wt 15 stycznia3434:44 2019 '531C Extra ID # 0002 7875' ux: Unix Extra Type 3 '531E Długość 000B 5320 Wersja 01 5321 UID Rozmiar 04 5322 UID 000003E8 5326 Rozmiar GID 04 5327 GID 000003E8 532B KOŃCOWY NAGŁÓWEK CENTRALNY 06054B50 532F Numer tego dysku 0000 5331 Centralny dysk Dir nr 0000 5333 Wpisy na tym dysku 0002 5335 Całkowita liczba wpisów 0002 5337 Rozmiar centralnego Dir 00000096 533B Przesunięcie komentarza do centralnego katalogu 00000096 533B Długość 0000 Gotowe 

Polecenie zipgrep

The zipgrep polecenie użyje funkcji typu grep do zlokalizowania określonej zawartości w spakowanych plikach. Jeśli plik jest zaszyfrowany, musisz wprowadzić hasło dla każdego pliku, który chcesz sprawdzić. Jeśli chcesz tylko sprawdzić zawartość jednego pliku z archiwum, dodaj jego nazwę na końcu polecenia zipgrep, jak pokazano poniżej.

$ zipgrep hazard twofiles.zip plik1 [twofiles.zip] plik1 hasło: niektóre pestycydy powinny zostać zakazane, ponieważ są niebezpieczne dla środowiska. 

Polecenie zipinfo

The zipinfo polecenie dostarcza informacji o zawartości spakowanego pliku, niezależnie od tego, czy jest zaszyfrowany czy nie. Obejmuje to nazwy plików, rozmiary, daty i uprawnienia.

$ zipinfo twofiles.zip Archiwum: twofiles.zip Rozmiar pliku zip: 21313 bajtów, liczba wpisów: 2 -rw-rw-r-- 3.0 unx 58021 Tx defN 19-sty-15 13:25 plik1 -rw-rw-r - 3.0 unx 58933 Tx defN 19-sty-15 13:34 plik2 2 pliki, 116954 bajty nieskompresowane, 20991 bajtów skompresowane: 82,1% 

Polecenie zipnote

The zipnote Za pomocą polecenia można wyodrębnić komentarze z archiwów zip lub dodać je. Aby wyświetlić komentarze, wystarczy poprzedzić nazwę archiwum poleceniem. Jeśli wcześniej nie dodano żadnych komentarzy, zobaczysz coś takiego:

$ zipnote twofiles.zip @ plik1 @ (komentarz powyżej tej linii) @ plik2 @ (komentarz powyżej tej linii) @ (komentarz pliku zip poniżej tej linii) 

Jeśli chcesz dodać komentarze, zapisz dane wyjściowe polecenia zipnote do pliku:

$ zipnote twofiles.zip> komentarze 

Następnie edytuj właśnie utworzony plik, wstawiając komentarze powyżej (komentarz powyżej tej linii) linie. Następnie dodaj komentarze za pomocą polecenia zipnote, takiego jak to:

$ zipnote -w twofiles.zip < comments 

Polecenie zipsplit

The zipsplit Polecenia można użyć do podzielenia archiwum zip na wiele archiwów zip, gdy oryginalny plik jest zbyt duży - być może dlatego, że próbujesz dodać jeden z plików do małego napędu. Najłatwiejszym sposobem na to wydaje się określenie maksymalnego rozmiaru dla każdej spakowanej części pliku. Ten rozmiar musi być wystarczająco duży, aby pomieścić największy dołączony plik.

$ zipsplit -n 12000 twofiles.zip 2 pliki zip zostaną utworzone (100% wydajności) tworzenie: twofile1.zip tworzenie: twofile2.zip $ ls twofile * .zip -rw-rw-r-- 1 shs shs 10697 Jan 15 14 : 52 twofile1.zip -rw-rw-r-- 1 shs shs 10702 15 stycznia 14:52 twofile2.zip -rw-rw-r-- 1 shs shs 21377 15 stycznia 14:27 twofiles.zip 

Zauważ, jak wyodrębnione pliki są kolejno nazywane „twofile1” i „twofile2”.

Zakończyć

The zamek błyskawiczny polecenie, wraz z niektórymi kompresorami zip, zapewniają dużą kontrolę nad sposobem generowania i pracy ze skompresowanymi archiwami plików.

[Zobacz także: Nieocenione wskazówki i porady dotyczące rozwiązywania problemów z Linuksem] Dołącz do społeczności Network World na Facebooku i LinkedIn, aby komentować najważniejsze tematy.