-
Notifications
You must be signed in to change notification settings - Fork 11
/
bolum11.tex
368 lines (304 loc) · 24.8 KB
/
bolum11.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
\chapter{Dosyaları Arşivlemek ve Sıkıştırmak}
\label{chap:bolum11}
\paragraph{Amaçlar}
\begin{itemize}
\item “Arşivleme” ve “Sıkıştırma” koşulların öğrenmek
\item tar'ı kullanabiliyor olmak
\item "gzip" ve "bzip2" kullanarak dosyaları sıkıştırmak ve açabiliyor olmak
\item Dosyaları zip ve unzip ile işleyebilmek
\end{itemize}
\paragraph{Önceden Bilinmesi Gerekenler}
\begin{itemize}
\item Kabuk yöntemini kullanmak (Bölüm ~\ref{chap:bolum4})
\item Dosyalar ve dizinleri kullanmak (Bölüm ~\ref{chap:bolum6})
\item Filtreleri kullanmak (Bölüm ~\ref{chap:bolum8})
\end{itemize}
\begin{section}{Arşivleme ve Sıkıştırma}
“Arşivleme” birden fazla dosyayı toplayıp tek bir parça haline getirir. Tipik uygulamalar Manyetik kasete üzerinde bir dizin ağacı depolar. tape—the magnetic tape drive appears within Linux as a device file onto which the output of the archival program can be written. Diğer taraftan, arşivlenen verileri kasetin sürücü cihaz dosyalarından okuyup arşivden çıkartarak dizi ağaçlarını yeniden yapılandırabilir. İlgili programların çoğu, arşivleri
çözüp oluşturabildiğinden beri her iki işlemi de arşivleme başlığı altında inceliyoruz.
Burada bizi ilgilendiren kısmı sadece kayıpsız sıkıştırmadır, sıkıştırılmış verilerimizi yeniden inşa ederek orijinal formuna sokabilmemizi sağlar.
Başka bir deyişle, yüksek dereceli bir sıkıştırmada gereksinimleri terk ederek orijinal haline getirmeyi başarabilmesi bir alternatiftir. Buna "Lossy" (kayıplı) sıkıştırma yöntemi denir ve aynen JPEG resimleri ve "MPEG-1" ses katmanlarındaki gibi sıkıştırılırlar. Işin ilginç yanı olan gereksiz verilerden kurtulmanın yolu; Örnek bir mp3 verisini alalım, bu parcalarin bir kisim sinyallerini atalim, “psycho-acoustic model” e dayanarak sadece insanların duyabileceği derecede ve bunu dinleyenlerin anlayamayacağı kadar kayıp vererek kodlamak mümkündür. JPEG bir birlerine benzeyen çizgilerle çalışır.
Çalışma süresinin kodlanması aşağıdaki karakter dizinin temsil eden basit bir örnek alırsak;
\begin{verbatim}
ABBBBAACCCCCAAAABAAAAAC
\end{verbatim}
daha yoğun şekilde
\begin{verbatim}
A*4BAA*5C*4AB*5AC
\end{verbatim}
Burda, “*4B ” sıralı dört tane “B” karakter. Bu basit yaklaşım “run-length encoding”(uzun kodlama çalıştırma) olarak adlandırılır ve bugün bile örneğin faks makinelerinde (düzeltmeleriyle birlikte) bulunur. “Real” (gerçek) gzip veya bzip2 givi sıkıştırma yazılımları gelişmiş yeni metotlar kullanırlar.
Bu tür birleşmiş arşivleme ve sıkıştırma yazılımlar Windows dünyasında sık ölçüde kullanırlar. (PKZIP, WinZIP vs), aynı adım genellikle Linux ve Unix dünyasında ayrı olarak ele alınır. Arşivi ilk kez kullanırken tar çıkış sıkıştırma işleminden önce tar ile dosyaların bir dizi olduğunu söylemek popüler bir yöntemdir, gzip-PKZIP ve benzerleri kendi üzerindeki her bir dosyayı sıkıştırır ve sonra bir tek büyük bir dosya içine sıkıştırılmış dosyaları toplar.
Bu yöntemin PKZIP ve bağlantılı yöntemlere göre avantajı bu yöntemin yüksek sıkıştırma oranı veren birkaç orijinal dosya arasında yer alabilmesidir. Ancak bu da şu durumda bir dezavantaj sayılabilir; eğer dosya hasar görmüşse tüm arşiv bu noktadan başlayarak işe yaramaz hale gelebilir.
Doğal olarak Linux’ta bile kimse sizi ilk sıkıştırmanızdan ve onları arşivlemenizden alıkoymaz. Maalesef bu yöntem diğerindeki kadar kullanışlı değildir
Elbette Linux’ta de Windows dünyasındaki rar ve zip gibi kullanışlı sıkıştırma programları vardır.
\paragraph{{\Huge{\PencilLeftDown}}Alıştırmalar}{
\begin{enumerate}
\item Neden run-length kodlama örneğinde AA yerine *2A i kullanılır?
\item run-length kodlama metodun kullanarak "A*2B****A" dizinini
nasıl gösterebilirsiniz?
\end{enumerate}}
\end{section}
\begin{section}{tar Kullanarak Dosya Arşivlemek}
tar ismi “kaset arşivin ’den türemiştir. Uygulama bireysel dosyaları arşiv dosyasına koyar ve birinden diğerine ek bilgileri not alır (tarih, erişme izni, sahibi, …). Her ne kadar tar’ın başlangıçta manyetik teyp sürücüleri ile birlikte kullanılabilir olması gereksede, tar arşivleri çeşitli mediyalar üzerine doğrudan yazılmışda olabilir. Diğer kullanımlar arasında tar dosyaları Linux ve diğer özgür yazılım paketleri için kaynak kodu yaymak için standart biçimidir.
Linux üzerinde yaygın olarak kullanılan katman GNU uygulaması diğer Unix türevleri olan tar uygulamalarında bulunan çeşitli uzantıları içerir. Örneğin, GNU tar birçok medyayı kapsayan çok hacimli arşiv oluşturarak bunu destekler. Bu, çoklu cilt arşivler bile küçük arşivler yalnızca çok kirli Tabii ki, diskete yedek kopyalarını sağlar. Elbette ki sadece küçük arşivler için önemli olan bu çoklu cilt arşivleri bile diskete yedekleme yapılmasına izin verir.
Küçük bir açıklama: Bölme (split) komutu arşiv dosyaları gibi büyük dosyaları kesebilmeyi sağlar ve böylece dosya uygun parçalar haline getirilerek disketlere kopyalanabilir ya da e-maille yollanabilir ve cat kullanılarak geldikleri şeklinde yeniden birleştirilebilirler.
tar’ın avantajları: Bunun kullanımı basittir, güvenli ve iyi çalışır, evrensel olarak tüm Unix ve Linux sistemlerinde çalışır. Bunun dezavantajları basit arızalardan dolayı problemlere yol açabilir, ve tar’ın tüm sürümleri aygıt dosyalarını depolayamayabilir. (Sisteminizin tümüne geri yüklemek istediğinizde).
tar arşivleri, dosyalar ve tüm dizin hiyerarşileri içerir. Eğer Windows medyası ağ üzerinden dizin ağaçları içinde takılı ise, içerikleri tar kullanarak arşivlenir. tar kullanılarak oluşturulan arşivler normalde sıkıştırılmamıştır, Ama başka sıkıştırma yazılımlar kullanarak sıkıştırılabilir (bugüne kadar her zaman gzip veya bzip2 kullanılmıştır). Bunlar yedek kopyalamalar ile ilgili iyi bir fikir değildir, sıkıştırılmış arşiv verilerin bit hatalar her zaman geri kalan verilerin kayıplarına yol acar. Typical suffixes for tar archives include .tar , .tar.bz2 , or .tar.gz , depending on whether they have been compressed not at all, using bzip2 , or using gzi . ".tgz" uzantısı zipped (sıkıştırılmış) tar veri formatı genel olarak DOS dosya sistemi üzerinde depolanması gerekiyor. tar ’in söz dizimi;
\begin{verbatim}
tar <options> <file>||<directory> …
\end{verbatim}
Önemli tar seçenekleri:
\begin{itemize}
\item[-c (“create”)]yeni arşiv oluşturur
\item[-f file]$<$file$>$ üzerinden yeni arşiv oluşturur (veya mevcut arşivden okur)
\item[$<$file$>$]düz dosyalarda veya bir aygıt dosyalarda bulunması (diğerlerinden yanı sıra
\item[-M]multi-volume arşivleri kullanmak
\item[-r]arşive dosyalar ekler (manyetik kaseteler için değil)
\item[-t]arşiv içindekileri görüntüler
\item[-u]arşiv içindeki kendi sürümünden daha yeni olan dosyaları değiştirir. Eğer dosyaların hepsi oluşmamışsa, bunlar daha önceden eklenmiştir (manyetik kaseteler için değil)
\item[-v]Verbose modulu—tam o sırada tar'ın ne yapıyor olduğunu görüntüler
\item[-x]Dosyalar ve Dizinleri arşivden çıkarır
\item[-z]gzip kullanarak arşivi sıkıştırır veya sıkıştırmadan çıkarır
\item[-Z]sıkıştırma kullanarak arşivi sıkıştırır veya açar (normalde linux üzerinde mevcut değil)
\item[-j]bzip2 kullanarak arşivi sıkıştırır veya sıkıştırmadan çıkarmamasının option syntax tar'ın söz dizim seçenekleri oldukça sıra dışıdır
\item[]
\item[]
\end{itemize}
Bunda -f gibi parametre olanlar dahil olmak üzere tekbir tire sonra birkaç seçenekleri "paketlemek" (başka bir yerde olduğu gibi) mümkündür.
İlk "seçenek paketi" önünde gösterişi çizgi dışarı bırakabilirsiniz. Sık sık aşağıdaki gibi komutları göreceksiniz:
\begin{verbatim}
tar cvf ...
\end{verbatim}
Yine de, bunu önermiyoruz.
Aşağıdaki örnekte arşivler tüm dosyaları ile birlikte asıl dizinde data isim ile devam eden data. tar dosyası kullanıcının ana sayfasında bulunmaktadır.
\begin{verbatim}
# tar -cvf ~/data.tar data* data1
data10
data2
data3
\end{verbatim}
-c seçeneği yeniden arşiv oluşturup düzenler, "-f ~/data.tar" isimli arşivin ismini verir. -v seçeneği sonucu hakkında hiçbir değişiklik yapamaz; sadece dosyaların isimleri hakkında arşivlenmiş halini ekranda görüntüler. (eğer dosyalardan birisi arşivlenmişe bu da gerçekten bir dizin ise, dizinin tüm bilgilerine arşivin içine dizinler eklenecektir.
Tar tüm bir dizinin arşivlenmesini de sağlar. Bunu çevreleyen dizinden yapmak daha iyidir. Arşivin içine bir altdizin oluşursa buda arşivi paketten çıkarırken yeniden oluşacaktır. Aşağıdaki örnekte daha detaylı olarak gösterecektir.
\begin{verbatim}
# cd /
# tar -cvf /tmp/home.tar /home
\end{verbatim}
Sistem yöneticisi root home.tar isimli /home dizininde bir arşiv depolarsa (tüm kullanıcı bilgileri). Bu da /tmp dizin içerisine saklanır.
Eğer dosyalar ve dizinlerin mutlak path isimlerin kullanarak verilirse, tar path ismine bağlı otomatik olarak depolar (başka bir sözle "/" ile başlayan her bir isimleri kaldırılmıştır). Başka bir bilgisayarda arşivden paket çıkarırken bu tür problemleri önler (Uygulama 11.6'ya bakın).
Arşivin "tablo içeriklerini" -t seçeneğin kullanarak görüntüleyebiliriz:
\begin{verbatim}
$ tar -tf data.tar data1
data10
data2
\end{verbatim}
-v seçeneği tari daha detaylı verir:
\begin{verbatim}
$ tar -tvf data.tar
-rw-r--r-- joe/joe 7 2009-01-27 12:04 data1
-rw-r--r-- joe/joe 8 2009-01-27 12:04 data10
-rw-r--r-- joe/joe 7 2009-01-27 12:04 data2
\end{verbatim}
-x komutu ile verileri açabilirsiniz:
\begin{verbatim}
$ tar -xf data.tar
\end{verbatim}
bu durumda tar terminal üzerinde hiç çıktı üretmez. -v parametresini kullanmanız gerekir:
\begin{verbatim}
$ tar -xvf data.tar data1
data10
data2
\end{verbatim}
Eğer arşiv hiyerarşi bir dizin içerirse, bu ana dizini yeniden oluşturur (Eğer hatırlarsanız tar tüm mutlak isimlerinden bir tane path ismine bağlı üretir). Herhangi dizine arşivleri çıkartabilirsiniz, her zaman bu yapıyı tutar.
Paketi çıkarma sırasında dosya veya dizin isimlerini değiştirebilirsiniz. Bu durumda söz konusu olan sadece dosyalar ve dizinler paketten açılacaktır. Ancak, arşivin içindeki isimlerin tam olarak eşleşmesine dikkat edin:
\begin{verbatim}
$ tar -cf data.tar ./data
$ tar -tvf data.tar
drwxr-xr-x joe/joe 0 2009-01-27 12:04 ./data/
-rw-r--r-- joe/joe 7 2009-01-27 12:04 ./data/data2
$ mkdir data-new ./ missing
$ cd data-new
$ tar -xvf ../data.tar data/data2
tar: data/data2: Not found in archive
tar: Error exit delayed from previous errors
\end{verbatim}
\paragraph{{\Huge{\PencilLeftDown}}Alıştırmalar}{
\begin{enumerate}
\item Ana dizinizdeki dosyaların liste bilgilerin bir dosya içinde depolayın. O dosyanın tar arşivini oluşturun. Orijinal dosya ve onun arşivini bir biriyle karşılaştır. Ne önerirsiniz?
\item Üç veya dört boş dosya oluşturup onu yeni oluşturduğunuz arşive ekleyiniz
\item Asıl dosyanızı silin ve tar'ın içindekileri arşivden çıkartın.
\item Eğer bir dosya veya muhafaza edilmesi için dizinin adı mutlak bir yol adı olarak verilirse neden GNU tar profilaktif olarak yol adı başlangıcında silmez? ve etc-backup.tar (a) mutlak yol isimleri varsa ne olacağını hayal edin,(b) başka bir bilgisayara aktarılır ve orada çözülür.
\end{enumerate}}
\end{section}
\begin{section}{gzip ile Dosya Sıkıştırma}
Linux in en yaygın kullanılan sıkıştırma uygulaması Jean-Loup Gailly ve Mark Adler tarafından geliştirilmiştir. Bu tek bir dosya sıkıştırması için kullanılmıştır (yakınlarda adı geçmiştir, çokça dosyaları tek arşivde içermesi mümkündür).
gzip uygulaması ("GNU zip"in kısaltılmışı) 1992'de sıkıştırma problemleri önlemek için ortaya çıkmıştır, standart Unix sürümlerin özel sıkıştırma aracısıdır. Sıkıştırma Lempel-Ziv-Wlch algoritmasına dayanmıştır (LZW), patent hakları US tarafından saklıdır 4,558,302. Bu patenti Sperry (later Unisys) şirketine ait olup bu da 20 Haziran 2003 de süresi sona ermişti. Diğer taraftan, gzip DEFLATE metodu Phil Katz [RFC 1951] tarafından kullanılmıstır, artık LZW patentine sahip olmamasına dayalı bunun yanı sıra LZ77 isimin alan Huffmen schema kodlaması özgür patent olmuştur. ayrıca, LZW den daha iyi çalışmaktadır.
gzip compressi kullanarak sıkıştırılmış dosyaları sıkıştırmadan çıkarır, çünkü Sadece Unisys tarafından patenti korunmuştur. Bu tür dosyaları ".Z" uzantıları ile ayırt edebilirsiniz.
gzip PKZIP ve benzer Windows uygulamaları "ZIP" ismiyle karıştırılmamalıdır. Bu tür uygulamalar derhal dosyaları sıkıştırıp ardından arşivleyebilir; gzip sadece sıkıştırma işiyle uğraşır ve arşivleme işini tar veya cpio uygulamalarına bırakır .—gzip, ZIP paketleri tam olarak hangi bir dosya DEFLATE yöntemle arşivlenmiş bunları arşivden çıkarabilir.
gzip bir tek dosyaları isler ve değiştirir, dosyaların uzantı isimlerine. gz ismini ekler. Bu değişikler dosyanın orijinal halinden daha az hafıza tutar. Birkaç dosya bir tek arşiv içine sıkıştırılmalıdır, tar ve gzip bileşik olmalıdır.
gzip in en önemli tercihleri şunlardır:
\begin{itemize}
\item[-c]sıkıştırılmış dosyasını standart sıktıysa gönderir, asil dosyanın yerine konur;
asilin kalanı değişmemektir.
\item[-d ]sıkıştırılmış dosyanı çıkarmak (öteki türlü: gunzip gzip -d gibi çalışır)
\item[-l ("list")]sıkıştırılmış dosyanın adı, paket boyutu gibi önemli bilgilerini görüntüler
\item[-r](“recursive”) alt dizindeki dosyaları sıkıştırır
\item[-S]$<$suffix$>$ uses the specified suffix in place of .gz
\item[-v]her bir dosyanın isimi ve sıkıştırma oranının çıktılarını gösterir
\item[-1 … -9]Bir bir sıkıştırma oranı belirtir -1 (veya --fast) Çok hızlı çalışır ama
iyi sıkıştırmaz, -9 (veya --best) çok iyi sıkıştırır ama yavaş; varsayılan ayarları ise -6'dır.
\end{itemize}
Aşağıdaki komutu letter.tex dosyasını sıkıştırır, letter.tex.gz isimli sıkıştırılmış dosya depolar ve asıl dosyası silinir:
\begin{verbatim}
$ gzip letter.tex
\end{verbatim}
Dosyayı paketten açarken
\begin{verbatim}
$ gzip -d letter.tex
\end{verbatim}
ya da
\begin{verbatim}
$ gunzip letter.tex
\end{verbatim}
letter.tex.gz (-S .t) yerine letter.tex.t olarak sıkıştırılmış dosya ve dosyanın sıkıştırma oranın cıktısı (-v):
\begin{verbatim}
$ gzip -vS .t letter.tex
\end{verbatim}
-s komutu sıkıştırmadan cıkarma üzerine belirtir, "gzip -d" olana kadar a .gz :
\begin{verbatim}
$ gzip -dS .t letter.tex
\end{verbatim}
Eğer tex uzantılı tüm dosyaları all.tar.gz şeklinde sıkıştırmak istersek, aşağıdaki komut kullanılır
\begin{verbatim}
$ tar -cvzf tex-all.tar.gz *.tex
\end{verbatim}
Unutmayın; tar asıl dosyayı silmez! Bu sadece paketten çıkarmak için kullanılır.
\begin{verbatim}
$ tar -xvzf tex-all.tar.gz
\end{verbatim}
\paragraph{{\Huge{\PencilLeftDown}}Alıştırmalar}{
\begin{enumerate}
\item Alıştırma 11.3 deki en iyi sıkıştırması ile tar arşivin sıkıştırın.
\item Sıkıştırılmış arşivin içeriklerini denetlemek. tar arşivinden asıl yerine geri getirin.
\item Nasıl bir şekilde ana dizininizdeki tüm içerikleri paketleyip gzip dosyasını sıkıştırır?
\end{enumerate}}
\end{section}
\begin{section}{bzip2 ile Dosya Sıkıştırmak}
bzip2 Julian Seward tarafından geliştirilen büyük ölçüde gzip'e uyumlu bir uygulamadır. Ancak, bu başka yöntemler içinde kullanılır yüksek derece fazladan zaman ve hafıza kullanılarak sıkıştırır (sıkıştırmadan açarken de bir farkı yoktur).
bzip2 "Burrows-Wheeler dönüşümünü" kullanır kodlamada sık sık ortaya çıkan dizinleri tek karakteristik dizilere çevirir. Bu sonuçlar "local frequency" e tek karakteristik olarak sıralanır, çalışma uzunluğu hesaplandıktan sonra, Huffman şemasına göre kodlanır. Huffmen kodu yoğun bir şekilde dosyaya yazılır.
Bzip'den ne haber? bzip aritmetiksel kodlama kullanan bzip2 ye göre daha önce çıkmış olup dönüşümü Huffman kodlamasından sonra bloklamıştır. Ancak, geliştiricisi aritmetiksel kodlamaya karar verdi bu nedenle onu çevreleyen uygulamalar çeşitli patent sorunlar yaşadı.
gzip, bzip2'ler sıkıştırmak için bir veya birden fazla dosya isimlerin parametre olarak kabul eden .bz2 uzantı isimile biten dosyalar, sıkıştırılmış sürümlerin yerine geçer.
-c ve -d seçenekleri eponymous seçeneklerine karsı gelip. Ancak, “seçeneklerin kalitesi” -1 den -9 a farklı çalışır: onlar o anki sıkıştırmasın kullanarak blok boyutun belirler. Varsayılan değeri 9 dur, -1 olunca önemli bir hız kazancı sunmaz.
-9 900kib boyutta bloklar. Bunun karşılığı hafıza kullanımı yaklaşık 3.7 MiB
Sıkıştırır (7.6 MiB sıkıştırır), çağdaş bir donamın sorun çıkarmamalıdır. Blok
Boyutlarının artırılmasından bir avantaj elde edilebilir gibi görünmüyor. Sıkıştırma üzerinde blok boyutu seçimini vurgulamakta yararı sıkıştırmadan çıkarmada gerekli olan hafıza miktarı boyutunu belirler, aklınızda tutmanız gerekeni eğer çok az hafızalı bilgisayarda çok byte bilgisayarla .bz2 dosya hazırlamada bzip2 (1) daha ayrıntılı olarak açıklar.
Karşılaştırdığımızda da gzip ve gunzip,bunzip2 dosyaları açmak için, bzip2 de dosyaları sıkıştırmak için kullanılır. (Bunlar gzip2'in başka bir ismidir: Hem “bzip2 -d ” kullanarak ta dosyaları açabilirsiniz.)
\end{section}
\begin{section}{zip ve unzip kullanarak Dosya Arşivleme ve Sıkıştırmak}
Windows da veya internette veri alış verişte genellikle widespread ZIP dosya biçimi kullanılmalı (bugünlerde Windows üzerinde birçok dosya arşiv programları da .tar.gz ile uyumludur). Linux'da iki ayrı uygulama vardır zip (arşivleri oluşturma) ve unzip (arşivleri açma).
Dağıtıma baglı olarak bu uygulamaları ayrı ayrı kurmanız gerekir. Debian GNU/Linux'da, örneğin, zip ve unzip iki ayrı paket bulunur.
Zip programının arşivleme tarzı size PKZIP gibi programların sıkıştırma tarzını hatırlatabilir. En basit değişle, komut satırına geçirilen dosyaları toplar:
\begin{verbatim}
$ zip test.zip file1 file2
adding: file1 (deflated 66%)
adding: file2 (deflated 62%)
$ _
\end{verbatim}
(Burada test.zip çıkan arşivin adıdır.)
-r seçeneğini kullanarak zip'e alt dizinlerin içine inmesi komutunu verebilirsiniz.:
\begin{verbatim}
$ zip -r test.zip ziptest
adding: ziptest/ (stored 0%)
adding: ziptest/testfile (deflated 62%)
adding: ziptest/file2 (deflated 62%)
adding: ziptest/file1 (deflated 66%)
\end{verbatim}
-@ seçeneğiyle zip kendi standartları çerçevesinde arşivlenecek dosyaların adlarını okur:
\begin{verbatim}
$ find ziptest | zip -@ test
adding: ziptest/ (stored 0%)
adding: ziptest/testfile (deflated 62%)
adding: ziptest/file2 (deflated 62%)
adding: ziptest/file1 (deflated 66%)
\end{verbatim}
(Arşiv dosyasının adında. zip son ekini kullanmayı unutabilirsiniz.)
zip bir arşive dosya eklemenin 2 yolunu bilir. Dosyayı sıkıştırma olmadan depolanmış kabul eder ve saklanır (sıkıştırılmış dosyanın yüzde kaç sıkıştırıldığını mesela "\% 62 düşürülmüş", arşiv içinde kendi orijinal dosyanın boyutu düşürülmüş iken sadece \%38 olduğu anlamına gelmektedir ). siz -0 seçeneğini kullanmadıkça zip otomatik olarak daha mantıklı bir yaklaşım seçer.
Eğer var olan bir zıp dosyasını onun ilk parametresiyle çağırır ve başka bir şey belirleyemezseniz, arşivlenecek dosyaların (aynı adları taşıyan mevcut dosyaların üzerine yazılmış olan) mevcut içeriğinin üstüne arşive eklenir. Bu durumda zıp, tar ve çipodan farklı davranır. Temiz bir arşivleme isterseniz ilk olarak dosyayı kaldırmanız gerekir.
Dosyaları aptalca eklemenin yanı sıra, zıp operasyonun diğer birkaç morlarını da destekler: -u seçeneği arşivi komut satırında belirtilen dosyayla aynı ismi taşıyan bir dosya daha varsa sadece yeni olanı arşiv dosyalarına ekleyerek günceller(adı geçen dosyalar henüz arşive hiçbir şekilde alınmamışsa).-f seçeneği arşiv dosyalarını komut satırında üzerine yazılmış daha yeni versiyonlarıyla canlandırır (bütünüyle yeni dosyalar arşive eklenmez). -d seçeneği arşiv içindeki dosyaları siler ve kişilerin isimleri komut satırında dosya adlarını değerlendirir.
zıp'in yeni sürümleri aynı zamanda -FS (dosya senkronizasyon) modunu destekler. Bu mod -u'nun yaptığını yaparak arşivi dosya sistemine senkronize eder, fakat aynı zamanda komut satırı üzerindeki henüz isimlendirilmemiş dosyaları siler(ya da -r durumunda aranan bir dizinin parçasıdır). Bu metodun avantajı yeniden yapılandırılmış bir arşivinkiyle karşılaştırıldığında arşivde önceden var olan değişmemiş dosyaların tekrar sıkıştırılmış olmasını gerektirmez.
zip her çeşit seçeneği destekler ve "zip -h" yi kullanarak listeye bakabilirsiniz (ya da -h2'yi kullanarak daha ayrıntılı bir listeye bakabilirsiniz). Aynı zamanda zip(1) man sayfası da çok bilgilendiricidir.
zip her çeşit seçeneği destekler ve "zip -h" yi kullanarak listeye bakabilirsiniz (ya da -h2'yi kullanarak daha ayrıntılı bir listeye bakabilirsiniz). Aynı zamanda zip(1) man sayfası da çok bilgilendiricidir.
Arşivin için gözetmenin en iyi yolu -v seçeneğin kullanmak, içinde ne olduğunu gormek altdizinler için zorluk çıkarabilir.
\begin{verbatim}
Bu tablonun düzenlenmesi lazım
$ unzip -v test The.zip suffix maybe omitted
Archive: Length --------
0 16163 18092 35147 --------
69402
test.zip Method ------ Stored Defl:N Defl:N Defl:N
Size Cmpr ------- ---- 00% 6191 62% 6811 62% 12119 66% ------- ---
25121 64%
Date ---------- 2012-02-29 2012-02-29 2012-02-29 2012-02-29
Time CRC-32 ----- -------- 09:29 00000000 09:46 0d9df6ad 09:01 4e46f4a1 09:01 6677f57c
Name
----
ziptest/ ziptest/testfile ziptest/file2 ziptest/file1 -------
4 files
\end{verbatim}
unzip le arşivin ismini çağırması arşivi paketten açmasına karşılık gelir:
\begin{verbatim}
$ mv ziptest ziptest.orig
$ unzip test
Archive: test.zip
creating: ziptest/
inflating: ziptest/testfile
inflating: ziptest/file2
inflating: ziptest/file1
\end{verbatim}
-d komutunu kullarak asıl dizinden başka bir dizin içine arşivi paketten açmak. Zorunlu kalsa bu dizin yeniden oluşturulur:
\begin{verbatim}
$ unzip -d dir test
Archive: test.zip
creating: dir/ziptest/
inflating: dir/ziptest/testfile
inflating: dir/ziptest/file2
inflating: dir/ziptest/file1
\end{verbatim}
Eğer komut satırında belirli dosya isimi varsa, o zaman sadece bu dosyaları paketten çözülecektir:
\begin{verbatim}
$ rm -rf ziptest
$ unzip test ziptest/file1
Archive: test.zip
inflating: ziptest/file1
\end{verbatim}
(bu durumda ziptest dizini ine oluşacaktır)
Alternatif olarak, -x komutun kullanırsanız seçilmiş olan dosyalar haricindekiler paketten çözülmüş olacaklar:
\begin{verbatim}
$ rm -rf ziptest
$ unzip test -x ziptest/file1
Archive: test.zip
creating: ziptest/
inflating: ziptest/testfile
inflating: ziptest/file2
\end{verbatim}
Ayrıca kabuk arama desenleri kullanarak paketi çözebilirsiniz (veya paketten çözmektende önleyebilirsiniz) :
\begin{verbatim}
$ rm -rf ziptest
$ unzip test "ziptest/f*"
Archive: test.zip
inflating: ziptest/file2
inflating: ziptest/file1 $ rm -rf ziptest
$ unzip test -x "*/t*"
Archive: test.zip
creating: ziptest/
inflating: ziptest/file2
inflating: ziptest/file1
\end{verbatim}
(Note the quotes, which are used to hide the search patterns from the actual shell so unzip gets to see them.) Unlike in the shell, the search patterns refer to the complete file names (including any “/”).
As is to be expected, unzip also supports various other options. Look at the program’s help information using “unzip -h” or “unzip -hh”, or read unzip(1).
\paragraph{{\Huge{\PencilLeftDown}}Alıştırmalar}{
\begin{enumerate}
\item Ana dizinize birkaç dosya oluşturun ve onları zip ile arşivleyin. "unzip -v" kullanarak arşivin içeriğine bak. /tm dizinine arşivi paketten çıkarın
\item unzip kulanarak paketten çözüyor olduğunuz dosya eğer dosya sistem içerisinde daha önceden oluşmuşsa ne olurdu?
\item zip arşivi file.zip iki altdizinleri barındırıyor olsun bunların içinde (örnegin .c, .txt, .dat). Öyle bir unzip komutun verin ki içerikler içinden .txt dosyaların ayrı bir yerde açsın.
\end{enumerate}}
\end{section}