!" #!"#"$" % $%&%'( %%'!)%'trgzip gunzipomprssunomprssdiffpth* &$ #$"" " %!+%,-./! #"'% 0%%! +%%1'%! 23 23 () *"!#!! Czionk o stłj szrokoi Nzwy progrmów, pol, ktlogów, wyniki dziłni wydwnyh pol. Czionk o stłj szrokoi pogruion Podj tkst, który nly dosłowni przpis. W przypdku plików ródłowyh wyróni istotnijsz frgmnty. Czionk o stłj szrokoi kursyw Tkst komntrz w przykłdowyh ssjh przy trminlu. Czionk o stłj szrokoi kursyw pogruion Wyróni istotnijsz frgmnty wyników dziłni wydwnyh pol. +) $# Ch w wygodny sposó dystryuow stworzon przz ns oprogrmowni musimy zn podstwow progrmy, któr tn pros wspomgj. Musimy minowii widzi jk oprowli: dr in. Artur Grmki, dr in. Jrosłw Grmki 1
rhiwizow pliki, jk j komprsow i dkomprsow orz wrszi jk tworzy tzw. łty i jk j nkłd n posidn pliki. Ninijsz wizni przyli t zgdnini.,) *"#!-"#!#%'.#"%$#/$ #/ "#/ "# Trdyyjnym komprsorm w systmh uniksowyh jst polni omprss ( i unomprss przy dkomprsji). Zwyzjowo tk skomprsown pliki otrzymuj koówk.z. W LINUX-i polni omprss jst wypirn przz duo wydjnijsz polni gzip (GNU zip). gzip potrfi dodtkowo rozpkowyw rhiw utworzon przz omprss. Istnij równi polni gunzip (do dkomprsji plików skomprsownyh polnim gzip), ho n dor sprw wykonuj ono dokłdni to smo o polni gzip wydn z opj d. gzip dził w tki sposó, komprsuj tylko pojdynz pliki. Uruhomini rkurnyjnj komprsji ktlogu (opj r) spowoduj nizln skomprsowni wszystkih plików w drzwi ktlogu. Jli trz hiliymy połzy j w jdn plik rhiwum, musimy uy polni tr. Nly równi pmit o tym, polni gzip ni tworzy n dysku nowyh plików (skomprsownyh) l zmini (funkjonlni to smo o polni mv) po prostu ni skomprsown pliki n ih skomprsown odpowidniki. Odwrotni dzij si w przypdku dkomprsji. Trz y tgo widomym, gdy przykłdowo skomprsowni wszystkih plików w ktlogu /in zy /sin mo unimoliwi pr systmu! Uwg: od pwngo zsu dostpny jst nowy progrm do komprsji o nzwi zip2. Uyw on rdzij wydjngo lgorytmu i w konskwnji pliki s lpij komprsown w krótszym zsi. Opj linii pol s rdzo podon do progrmu gzip (ho ni idntyzn!). Szzgóły znjdzisz w dokumntji systmowj mn. N poniszym przykłdzi zozymy jk dziłj omwin tu polni: Rozgldmy si po dysku. $ ls ddpro. glol. host. host.h hostr. imllo. lmsg. lpvm. lpvmt. Koprsujmy wszystki pliki w iym ktlogu. $ gzip * Stwirdzmy, oryginln pliki zostły ZASTPIONE (!) wrsjmi spkownymi. Wrsji ni skomprsownyh NIE MA ju n dysku! $ ls ddpro..gz host..gz hostr..gz lmsg..gz lpvmt..gz glol..gz host.h.gz imllo..gz lpvm..gz Zstosowni opji l wywitl rport dotyzy rozmiru i współzynnik komprsji ju skomprsownyh plików. Zstosowni dodtkowo opji v dj rport rozszrzony o dt i zs modyfikji oryginlngo pliku, mtod komprsji orz sum kontroln CRC. $ gzip -l * omprssd unomprssd rtio unomprssd_nm 20939 72788 71.3% ddpro. 5070 17814 71.7% glol. 7397 23181 68.2% host. 2026 4989 59.9% host.h 7700 23379 67.2% hostr. oprowli: dr in. Artur Grmki, dr in. Jrosłw Grmki 2
$ 4090 12865 68.4% imllo. 1573 3641 57.5% lmsg. 27593 92832 70.3% lpvm. 4063 11665 65.4% lpvmt. 80451 263154 69.4% (totls) $ gzip -lv * mthod r dt tim omprssd unomprssd rtio unomprssd_nm dfl 77346186 Sp 27 01:35 20939 72788 71.3% ddpro. dfl 618506f1 F 8 00:14 5070 17814 71.7% glol. dfl 3fd573 Sp 27 01:35 7397 23181 68.2% host. dfl 296f2f6 Sp 27 01:35 2026 4989 59.9% host.h dfl d7234385 Sp 27 23:25 7700 23379 67.2% hostr. dfl d5127 Mr 24 21:16 4090 12865 68.4% imllo. dfl 7642620 Jun 26 00:08 1573 3641 57.5% lmsg. dfl 6065f230 Sp 25 23:20 27593 92832 70.3% lpvm. dfl 687979 F 8 00:14 4063 11665 65.4% lpvmt. 80451 263154 69.4% (totls) $ Stwirdzmy, uzysklimy około 3-krotny stopi komprsji. 263154/80451=3.27 Z powrotm rozpkowujmy pliki. $ gzip -d * Sprwdzmy, zy si udło. Okzuj si, tk. $ ls ddpro. glol. host. host.h hostr. imllo. lmsg. lpvm. lpvmt. $ Mmy równi moliwo (w niwilkim w sumi zkrsi) wpływ n stopi komprsji. Liz 1 oznz njszysz, l t i njgorsz komprsj, liz 9 odwrotni. Domylni przyjmown jst liz 6. Róni jk ponij wid s jdnk stosunkowo niwilki i zwykl domyln wrto 6 jst wystrzj. $ ls -l ddpro. -rw-r--r-- 1 rtur studnts 72788 Sp 27 2001 ddpro. $ gzip -1 ddpro. $ ls -l ddpro..gz -rw-r--r-- 1 rtur studnts 25195 Sp 27 2001 ddpro..gz $ gzip -9 ddpro. $ ls -l ddpro..gz -rw-r--r-- 1 rtur studnts 20877 Sp 27 2001 ddpro..gz $ gzip ddpro. $ ls -l ddpro..gz -rw-r--r-- 1 rtur studnts 20939 Sp 27 2001 ddpro..gz 0) 1!#%.#"% Z pomo polni tr (skrót od tp rhivr) tworzymy orz rozpkowujmy pliki rhiwów. Arhiwum nly rozumi jko plik, w którym zpkowno jdn lu wij plików ródłowyh znjdujyh si w jdnym lu wij ktlogh ih ilo jst w zsdzi niogrnizon. Pzk tk jst zdydowni łtwij zrzdz, ni n przykłd kilkom tysimi plików, któr t pzk tworz. oprowli: dr in. Artur Grmki, dr in. Jrosłw Grmki 3
Polni tr m ogromn liz opji wirsz pol (wydj polni mn tr sm si przkonsz, il ih jst). Nm tk nprwd potrznyh dzi tylko kilk podstwowyh pol. N poniszym przykłdzi zozymy jk dził polni tr: Rozgldmy si po ktlogu iym. Mmy w nim pi plików (w tym jdn ukryty), dw podktlogi, w kdym z nih po jdnym pliku. $ ls -lr -rw-r--r-- 1 rtur studnts 1234 Nov 7 12:17.shr -rw-r----- 1 rtur studnts 761 Ot 11 07:47 l. -rw-r----- 1 rtur studnts 82 Ot 11 07:47 hllo. drwxr-xr-x 2 rtur studnts 4096 Nov 12 16:48 kt1 drwxr-xr-x 2 rtur studnts 4096 Nov 12 16:48 kt2 -rw-r----- 1 rtur studnts 164 Ot 28 13:24 pl. -rw-r--r-- 1 rtur studnts 158 Ot 28 13:26 plng. $ ls -lr./kt1 drwxr-xr-x 2 rtur studnts 4096 Nov 12 16:48. drwxr-xr-x 4 rtur studnts 4096 Nov 12 16:49.. -rw-r----- 1 rtur studnts 2368 Nov 6 12:28 Mkfil $ ls lr./kt2 -rw-r----- 1 rtur studnts 303 Ot 11 07:47 Mkfil.hllo -- TWORZENIE ARCHIWUM -- Tworzymy rhiwum (opj od rt), korzystmy z opji -f wskzuj, tworzymy rhiwum w posti pliku dyskowgo orz wywitlmy oikty, któr s łdown do rhiwum (opj -v). Wykorzystujmy znk kropki jko lis igo ktlogu. Zuwmy, tr domylni tworzy rhiwum rkurnyjni (z podktlogmi) orz dołz ukryt pliki orz ukryt ktlogi (jli tkow s). $ tr -vf moj_rh.tr.././hllo../.shr./kt1/./kt1/mkfil./pl../plng../l../kt2/./kt2/mkfil.hllo tr:./moj_rh.tr: fil is th rhiv; not dumpd Komunikt./moj_rh.tr: fil is th rhiv; not dumpd otrzymny po utworzniu rhiwum mówi nm, utworzono plik moj_rh.tr, l z zrzuni n tm ( not dumpd ). Wywitlmy wilko rhiwum. Widzimy, jst ono duo wiksz ni sum wilkoi oiktów w nim umiszzonyh. Róni w wilkoi rhiwum orz plików ródłowyh dzi si zmnijszł, gdy rhiwum dzi skłdło si z wikszj iloi plików i ktlogów (ó, plik tr zwir pwn ilo informji systmowyh, zyli w pwnym snsi ndmirowyh). Zpmitjmy: tworzni rhiwum orz komprsj plików to dw zupłni rón poji! $ ls -l moj_rh.tr -rw-r--r-- 1 rtur studnts 20480 Nov 12 17:12 moj_rh.tr -- WY WIETLANIE ZAWARTO CI -- Wypisujmy zwrto rhiwum. Opj v dj nm szroki rport. $ tr -tvf moj_rh.tr drwxr-xr-x rtur/studnts 0 2003-11-12 17:11:28./ -rw-r----- rtur/studnts 82 2003-10-11 07:47:56./hllo. oprowli: dr in. Artur Grmki, dr in. Jrosłw Grmki 4
-rw-r--r-- rtur/studnts 1234 2003-11-07 12:17:12./.shr drwxr-xr-x rtur/studnts 0 2003-11-12 16:48:02./kt1/ -rw-r----- rtur/studnts 2368 2003-11-06 12:28:10./kt1/Mkfil -rw-r----- rtur/studnts 164 2003-10-28 13:24:35./pl. -rw-r--r-- rtur/studnts 158 2003-10-28 13:26:25./plng. -rw-r----- rtur/studnts 761 2003-10-11 07:47:54./l. drwxr-xr-x rtur/studnts 0 2003-11-12 16:48:06./kt2/ -rw-r----- rtur/studnts 303 2003-10-11 07:47:57./kt2/Mkfil.hllo -- KASOWANIE PLIKÓW Z ARCHIWUM -- Ay usun plik z rhiwum musimy uy długij opji -dlt i okrli nzw pliku (plików, ktlogów), który hmy usun. Uwg: oprj usuwni plików ni posid wygodnj jdnolitrowj opji - MUSIMY uy opji -dlt (dw znki minus plus nzw dlt). $ tr --dlt -f moj_rh.tr./.shr./kt1./kt2 Ptrzymy, zy udło si usun wskzn pliki i ktlogi. $ tr -tf moj_rh.tr././hllo../pl../plng../l. -- MODYFIKACJA ARCHIWUM -- Do utworzongo rhiwum momy łtwo dod koljn pliki orz ktlogi. Uywmy tutj opji r lu u. Opj r mówi progrmowi tr, y tn dodł okrlon pliki n kou pliku tr. Opj u ntomist po prostu uktulni pliki w rhiwum nowymi wrsjmi. Ozywii jli plik ni istnij jszz w rhiwum, to zostni do nigo dodny. $ tr -rf moj_rh.tr.shr Sprwdzmy, zy plik zostł dodny. $ tr -tf moj_rh.tr././hllo../pl../plng../l..shr -- TWORZENIE ARCHIWUM SKOMPRESOWANEGO -- Tworzymy now rhiwum. Tym rzm uywmy opji z, któr powoduj, rhiwum po utworzniu jst ntyhmist komprsown (domylnym progrmm komprsujym jst gzip). Zuwmy, tym rzm rhiwum m snsown wilko. Zwyzjowo skomprsown pliki rhiwum mj nzwy zkozon n.gz lu.tgz lu.tr.gz $ tr -zf moj_rh.tr.gz. $ ls -l m* -rw-r--r-- 1 rtur studnts 20480 Nov 12 17:27 moj_rh.tr -rw-r--r-- 1 rtur studnts 2925 Nov 12 17:33 moj_rh.tr.gz Pmitjmy, jli hmy przjrz skomprsown rhiwum, musimy to zroi uywj opji z. $ tr -tzf moj_rh.tr.gz././hllo../pl../plng../l. -- MODYFIKOWANIE ARCHIWUM SKOMPRESOWANEGO -- oprowli: dr in. Artur Grmki, dr in. Jrosłw Grmki 5
Uwg: ni mon usuw plików z skomprsowngo pliku tr. Skomprsowngo rhiwum ni mon t ktulizow (opj u) orz dołz nowyh plików (opj r). $ tr -rf moj_rh.tr.gz host. tr: This dos not look lik tr rhiv tr: Skipping to nxt hdr tr: Error xit dlyd from prvious rrors $ tr -rzf moj_rh.tr.gz host. tr: Cnnot updt omprssd rhivs tr: Error is not rovrl: xiting now $ tr --dlt -zf moj_rh.tr.gz l. tr: Cnnot updt omprssd rhivs tr: Error is not rovrl: xiting now -- ROZPAKOWYWANIE ARCHIWUM -- Ch rozpkow pliki z rhiwum uywmy opji x. Ozywii jli rozpkowujmy skomprsown rhiwum musimy uy dodtkowo opji z. $ tr -xzf moj_rh.tr.gz $ ls l. hllo. moj_rh.tr.gz pl. plng. 2) """3.#"%- 4/#1 2)() $# Progrm diff słuy do porównywni plików (główni tkstowyh, l potrfi t porównyw pliki inrn). Z jgo pomo tworzymy tzw. plik róniowy, który zwir informj o tym, w jki sposó (w któryh wirszh) róni si dw dn pliki. Przy porównywniu plików tkstowyh njrdzij nturln mtod dni jst porównywni łyh wirszy w plikh ni poszzgólnyh znków. Gdy dw dn wirsz ni s idntyzn fkt tn w odpowidni sposó odnotowywny jst w pliku róniowym. Dysponuj plikim róniowym orz jdnym z porównywnyh plików mon odtworzy drugi plik. Do tgo odtwrzni słuy drugi z omwinyh w tym rozdzil pol, minowii polni pth. Omwiny tu mhnizm uywny jst w LINUX-i njzij do ktulizji plików ródłowyh (typowym przykłdm s pliki ródłow jdr systmu). Gdy wprowdzon w plikh ródłowyh zminy ni s wilki ni m snsu udostpni płnyh kodów ródłowyh wystrzy udostpni (np. w intrni) tylko plik róniowy (tzw. łt; ng. pth) i plik tki ju wystrz do uktulnini posidnyh kodów ródłowyh do njrdzij ktulnj wrsji (mylimy tu o zminh iloiowyh ni mrytoryznyh, o t drugi ozywii mog y rdzo nwt znz, mimo zminy zldwi kilku linii kodu!). Jli uwidomimy soi, njnowsz wrsj jdr systmu LINUX (numr 2.4.22; instrukj powstj 10.11.2003) zjmuj ok. 30MB jgo uktulnini (pth dl wrsji 2.4.18) tylko 5MB to ozywistym stn si zlty plików róniowyh. Ay lij pozn omwiny tu mhnizm rozwmy nstpujy przykłd. Nih plik A dzi str wrsj progrmu plik B jgo wrsj njnowsz. Wówzs moliw jst wygnrowni pliku róniowgo R i zhodz nstpuj zlnoi, shmtyzni przdstwion w poniszj tli: oprowli: dr in. Artur Grmki, dr in. Jrosłw Grmki 6
Symol B-A=R B=A+R A=B-R Opis Utworzni pliku róniowgo (tzw. łty) Now wrsj pliku A (idntyzn z plikim B) otrzymmy, gdy n plik A nłoymy łt R Przywrmy pirwotn zwrto plikowi A ( zdjmujmy łt) Progrm diff mo gnrow pliki róniow w kilku rónyh, d fto ustndryzownyh, formth: normlnym, GNU unifid orz kontkstowym. W ninijszj instrukji dokłdni omówiony zostni formt normlny. Pozostł dw s w istoi tylko pwn modyfikj tgo pirwszgo. Szzgółowy i rdzij formlny opis formtu normlngo mon znl w systmi pomoy info, wydj polni info diff (tkst pomoy mon t przsł do pliku tkstowgo polnim info diff -output=nzw_pliku -sunods) orz w dokumntji mn, wydj polni mn diff. Tutj ogrnizymy si tylko do kilku przykłdów. 2)+) 53-( Jko pirwszy rozwmy plik A zwirjy trzy lini tkstu orz plik B zwirjy t sm trzy lini tkstu l zpisn w odwrotnj koljnoi. Wówzs wydj polni: diff A B > R otrzymmy plik róniowy pokzny w trzij kolumni poniszj tli: Plik A Plik B Plik róniowy R 1,2d0 < < 32,3 > > Zpisy w pliku róniowym nly odzyt nstpujo: y plik A stł si idntyzny jk plik B nly nłoy n plik A łt. Po wykonniu poniszyh dwóh zynnoi otrzymmy plik A idntyzny jk plik B (dl przypomnini nzln id jst tk: ni posidmy pliku B posidmy z to plik A orz plik róniowy R i z ih pomo hmy zudow plik B). Wszystki nizdn dn znjdzimy w pliku róniowym R. Znkim < oznzony jst wirsz pirwotny, znkim > wirsz osttzny. Nly wi wykon nstpuj zynnoi: 1. w pliku A wyksow wirsz pirwotn 1-2, któr znjduj si pod wirszm 0, zyli u ns s to dwi pirwsz lini, o ni m przi linii zro (zpis 1,2d0) 2. y uzysk wirsz wynikow 2-3 nly pod wirszm 3 wstwi dw wirsz osttzn (zyli orz ; zpis: 32,3). Uwg 1: wszystki numry wirszy zpisywn w pliku róniowym s oryginlnymi numrmi wirszy w plikh przd ih modyfikj. Uwg 2: poniw plik ródłowy A jst rdzo niwilki, wi rozmir pliku róniowgo R jst kilkkrotni wikszy od pliku ródłowgo A. Jdnk w prktyznyh zstosownih rozmiry plików ródłowyh s o wil wiksz, ntomist z drugij strony pliki poddwn oprji oprowli: dr in. Artur Grmki, dr in. Jrosłw Grmki 7
porównywni ni róni si zytnio od sii i dltgo wynikowy plik róniowy (który rjstruj tylko róni w plikh ni ih jdnkow lmnty wspóln) jst wilokrotni mnijszy ni rozmir plików ródłowyh. Dopiro wtdy tworzni pliku róniowgo m sns. Powysz rlizown jst po wydniu nstpujgo polni: pth A R W wyniku wykonni tgo polni zwrto pliku A stni si idntyzn z zwrtoi plik B. Zwrómy równi uwg, zwrto pliku róniowgo ni jst jdnoznzn. Wynik to z lgorytmu, wdług którgo dził progrm diff. Str si on po prostu utworzy plik róniowy o moliwi jk njmnijszym stopniu złoonoi, tym smym wilkoi. Dl powyszgo przykłdu inn wrsj pliku róniowgo mo wygld tk jk ponij. Czynnoi do wykonni s inn, l fkt koowy (zyli plik A idntyzny z plikim B) dzi tki sm. Plik róniowy R 11 < --- > 33 < --- > 2),) 53-+ Koljny przykłd jst nio rdzij złoony: Plik C Plik D Plik róniowy R d D x f g 1,2d0 < < 42,3 < d --- > D > x 55,6 > f > g Zpisy w pliku róniowym nly odzyt nstpujo: y plik C stł si idntyzny jk plik D nly nłoy n plik C łt, zyli wykon nstpuj zynnoi: 1. w plik C wyksow lini 1-2, któr znjduj si pod wirszm 0, zyli u ns s to dwi pirwsz lini, o ni m przi linii zro (zpis: 1,2d0), 2. y uzysk wirsz wynikow 2-3 nly wirsz 4 ( pirwotny u ns d ) zstpi dwom wirszmi osttznymi ( D orz x ; zpis: 42,3), 3. y uzysk wirsz wynikow 5-6 nly pod wirszm 5 wstwi dw wirsz osttzn (zyli f orz g ; zpis: 55,6). Po wykonniu powyszyh trzh zynnoi otrzymmy w wyniku plik C tki sm jk plik D. Wszystki nizdn dn znjdzimy ozywii w pliku róniowym R oprowli: dr in. Artur Grmki, dr in. Jrosłw Grmki 8
Powysz rlizown jst po wydniu nstpujgo polni: pth C R W wyniku wykonni tgo polni zwrto pliku C stni si idntyzn z zwrtoi plik D. Poszzgóln tpy zminy mon przdstwi w poniszj tli: plik pirwotny C tp 1 tp 2 tp 3 d d D x D x f g 2)0) 53-, Ch z koli odzysk oryginln zwrto pliku C nly równi uy do tgo lu pliku róniowgo. Rlizown jst to po wydniu nstpujgo polni (uwg n przłznik R): pth R C R Tym rzm jdnk plik róniowy dzi intrprtowny dzi nio inzj, minowii: y uzysk wirsz wynikow 1-2 nly n poztku pliku (pod wirszm zrowym ) wstwi dw wirsz pirwotn (zyli orz ; zpis: 1,2d0), y uzysk wirsz wynikowy 4 nly wirsz osttzn 2-3 zmini n wirsz pirwotny 4 (zyli d ; zpis: 42,3), y uzysk wirsz wynikowy 5 nly wyksow wirsz osttzn 5-6 ( f orz g ; zpis: 55,6). W wyniku wykonni tgo polni plik C powrói do swojj pirwotnj zwrtoi. Wszystki nizdn dn znjdzimy ozywii w pliku róniowym R. Poszzgóln tpy zminy mon przdstwi w poniszj tli: plik wynikowy C tp 1 tp 2 tp 3 D x f g D x f g d f g d 2)2) 6$"$%!-"! Ponij zmiszzono oryginlny frgmnt z dokumntji polni diff (polni: info diff). Lktur tgo tkstu potrktuj jko wizni jzykow i uzupłnini informji n tmt formtu normlngo polni diff. Dtild Dsription of Norml Formt ------------------------------------- Th norml output formt onsists of on or mor hunks of oprowli: dr in. Artur Grmki, dr in. Jrosłw Grmki 9
diffrns; h hunk shows on r whr th fils diffr. Norml formt hunks look lik this: CHANGE-COMMAND < FROM-FILE-LINE < FROM-FILE-LINE... --- > TO-FILE-LINE > TO-FILE-LINE... Thr r thr typs of hng ommnds. Eh onsists of lin numr or omm-sprtd rng of lins in th first fil, singl hrtr inditing th kind of hng to mk, nd lin numr or omm-sprtd rng of lins in th sond fil. All lin numrs r th originl lin numrs in h fil. Th typs of hng ommnds r: `LR' Add th lins in rng R of th sond fil ftr lin L of th first fil. For xmpl, `812,15' mns ppnd lins 12-15 of fil 2 ftr lin 8 of fil 1; or, if hnging fil 2 into fil 1, dlt lins 12-15 of fil 2. `FT' Rpl th lins in rng F of th first fil with lins in rng T of th sond fil. This is lik omind dd nd dlt, ut mor ompt. For xmpl, `5,78,10' mns hng lins 5-7 of fil 1 to rd s lins 8-10 of fil 2; or, if hnging fil 2 into fil 1, hng lins 8-10 of fil 2 to rd s lins 5-7 of fil 1. `RdL' Dlt th lins in rng R from th first fil; lin L is whr thy would hv pprd in th sond fil hd thy not n dltd. For xmpl, `5,7d3' mns dlt lins 5-7 of fil 1; or, if hnging fil 2 into fil 1, ppnd lins 5-7 of fil 1 ftr lin 3 of fil 2. Litrtur 1. Dokumntj systmow mn orz info oprowli: dr in. Artur Grmki, dr in. Jrosłw Grmki 10