Preskočiť na hlavný obsah

Linuxový príkaz ZIP, príklady pre kompresiu a dekompresiu

Veľmi často vytvárame komprimované dáta pomocou archívu zip a tak isto často ich aj s týchto archívov čítame. V Linuxe máme možnosť rovnako ako vo Windowse či MAC OS vytvárať archív zip v grafickom prostredí. Ja sa dnes však budem venovať tomu ako to spraviť pomocou príkazového riadku. Vytvoril som si nejaký priečinok test v ktorom som si vytvoril 2 textové súbory na ktorých budem ukazovať nejaké príklady.
tomas@tomas:~/Dokumenty/tmp/test$ ls -lh
celkom 8,0K
-rwxr----- 1 tomas tomas  10 jan  9 17:03 hello
-rwxr----- 1 tomas tomas 562 jan  9 17:03 lipsum

Ako vytvoriť archív zip

Vytvorenie archívu zip je veľmi jednoduché. Najprv zadáme príkaz zip potom názov archívu a následne súbor(y) ktoré chceme do archívu vložiť. Takto:
tomas@tomas:~/Dokumenty/tmp/test$ zip archiv.zip lipsum hello
  adding: lipsum (deflated 45%)
  adding: hello (stored 0%)
... v priečinku nám pribudol archív archiv.zip.

Teraz si ukážeme ako súbory z archívu vybrať

Vybranie súborov alebo aj dekompresia je taktiež veľmi jednoduchá. Zadáme príkaz unzip a zaň vložíme názov archívu (v našom prípade archive.zip).
tomas@tomas:~/Dokumenty/tmp/test$ rm hello lipsum
tomas@tomas:~/Dokumenty/tmp/test$ ls -lh
celkom 4,0K
-rw-rw-r-- 1 tomas tomas 617 jan  9 17:27 archiv.zip
tomas@tomas:~/Dokumenty/tmp/test$ unzip archiv.zip
Archive:  archiv.zip
  inflating: lipsum
 extracting: hello
tomas@tomas:~/Dokumenty/tmp/test$ ls -lh
celkom 12K
-rw-rw-r-- 1 tomas tomas 617 jan  9 17:27 archiv.zip
-rwxr----- 1 tomas tomas  10 jan  9 17:03 hello
-rwxr----- 1 tomas tomas 562 jan  9 17:03 lipsum
Pred dekompresiou som si ešte odstránil pôvodné súbory lipsum a hello aby bolo zreteľné, že príkaz naozaj funguje.

Čítanie archívu zip

Určite nastal prípad keď ste sa chceli len pozrieť do archívu aké súbory tam sú. Aj na také sa myslelo a slúži na to takisto príkaz unzip avšak s parametrom -v
tomas@tomas:~/Dokumenty/tmp/test$ unzip -v archiv.zip
Archive:  archiv.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
     562  Defl:N      307  45% 2014-01-09 17:03 d4cde097  lipsum
      10  Stored       10   0% 2014-01-09 17:03 0e09b976  hello
--------          -------  ---                            -------
     572              317  45%                            2 files
... vypísal sa nám archiv.zip do jednoduchej tabuľky. V prípade, že by sme teraz chceli s tohto archívu prečítať napríklad súbor hello v ktorom je napísané "ahoj svet" opäť je to jednoduché a slúži nám na to parameter -c
tomas@tomas:~/Dokumenty/tmp/test$ unzip -c archive.zip hello
Archive:  archive.zip
 extracting: hello                   
ahoj svet

Chránený heslom

Teraz už vieme vytvoriť archív, prečítať si čo je vo vnútri a rozbaliť archív. Ale čo ak chceme vytvoriť archív chránený heslom alebo dokonca šifrovaný? Vytvoriť archív chránený heslom je veľmi jednoduché pri vytváraní archívu pridáme parameter -P a zaň napíšeme heslo.
tomas@tomas:~/Dokumenty/tmp/test$ zip -P heslo archiv.zip hello lipsum 
  adding: hello (stored 0%)
  adding: lipsum (deflated 45%)
... následne pri rozbaľovaní alebo čítaní nejakého súboru z tohto archívu si po nás systém vypýta heslo.
tomas@tomas:~/Dokumenty/tmp/test$ unzip archiv.zip 
Archive:  archiv.zip
[archiv.zip] hello password: 
... po zadaní hesla a všetko správa tak ako predtým ako keby tam heslo nebolo. Ako posledné predstavím funkciu gpg ktorá nám umožní náš archív zašifrovať nejakým heslom. Pri šifrovaní používame parameter -c ako crypt. Po zadaní príkazu ...
tomas@tomas:~/Dokumenty/tmp/test$ gpg -c archiv.zip 
... si systém vyžiada heslo na kryptovanie a vytvorí súbor archiv.zip.gpg ktorý je už zašifrovaný. Na odšifrovanie používame rovnakú funkciu avšak bez parametru -c.
tomas@tomas:~/Dokumenty/tmp/test$ gpg archiv.zip.gpg 
gpg: CAST5 zašifrované dáta
gpg: zašifrované jedným heslom
gpg: VAROVANIE: správa nemá ochranu integrity

Komentáre

Obľúbené príspevky z tohto blogu

Java - Súčet Listu s objektami BigDecimal

Pri používaní typu BigDecimal som narazil na zaujímavú úlohu a to sčítanie všetkých hodnôt v Liste. Majmä nasledovne definovaný list: List < BigDecimal > listOfBigDecimals = new LinkedList (); 1. spôsob je klasicke preiterovanie celého listu: BigDecimal sum = BigDecimal . ZERO ; for ( BigDecimal number : listOfBigDecimals ) { sum = sum . add ( number ); } 2. spôsobom je využitie stream.reduce() : BigDecimal sum = listOfBigDecimals . stream () . reduce ( BigDecimal . ZERO , BigDecimal :: add ); BONUS: spôsob s použitím reduce() v Kotline : val sum : BigDecimal = listOfBigDecimal . reduce { a , n -> a . add ( n ) }

Word z HTML v Jave

Tento krátky článok ukazuje ako pomocou knižnice docx4j vytvoriť dokument typu docx (Word). Potrebné knižnice môžeme nájsť na webe Docx4Java.org alebo v centrálnom repozitári mavenu (tuto cestu som si zvolil aj ja). Maven dependency: <dependency> <groupId>org.docx4j</groupId> <artifactId>docx4j</artifactId> <version>6.0.1</version> <type>jar</type> </dependency> <dependency> <groupId>org.docx4j</groupId> <artifactId>docx4j-ImportXHTML</artifactId> <version>6.0.1</version> </dependency> Vzorové použitie Vytvorenie docx dokumentu s jednou tabuľkou: package net.adamjak.tomas.htmltodocx; import java.io.File; import javax.xml.bind.JAXBException; import org.docx4j.convert.in.xhtml.XHTMLImporterImpl; import org.docx4j.openpackaging.exceptions.Docx4JException; import org.docx4j.openpackaging.packages.WordprocessingMLPackage; import org.docx4j.ope

Ako previesť .mp3 súbor do .wav v Linuxe

Počas Vianočných sviatkov som skúmal ako previesť pesničky ktoré mám v počítači vo formáte MP3 do formátu audio CD ktorý by bez problémov načítala aj moja postaršia veža. Samozrejme našiel som veľa spôsobov avšak asi najjednoduchším bol veľmi jednoduchý shell skript. Inštalácia je veľmi jednoduchá: # Ubuntu sudo apt-get install mpg123 # Fedora yum install mpg123 Používať tento shell skript sa dá dvoma spôsobmi. Buď budete prevádzať každý MP3 súbor samostatne pomocou tohto príkazu: mpg123 -w vystup.wav vstup.mp3 Alebo využijete jednoduchú funkciu ktorú vložíte do súboru .bashrc v vašom koreňovom adresári. mp3towav(){      [[ $# -eq 0 ]] && { echo "mp3wav mp3file"; exit 1; }      for i in "$@"      do           # create .wav file name           local out="${i%/*}.wav"           [[ -f "$i" ]] && { echo -n "Processing ${i}..."; mpg123 -w           "${out}" "$i" &>/dev/null && echo "don