Fayl arxivlənməsi bir və ya daha çox faylın mümkün qədər səmərəli şəkildə ötürülməsi və ya saxlanması lazım olduqda istifadə olunur. Bu fəsildə araşdırılan iki əsas aspekt var:
- Arxivləşdirmə: Birdən çox faylları bir-birinə birləşdirir ki, bu da fərdi sənədlərdə ötürmə xərcləri aradan qaldırır və faylların ötürülməsini asanlaşdırır.
- Sıxılma: lazımsız məlumatları silməklə faylları daha kiçik edir
Faylları sıxılması
Sıxılma, faylın həm bərpa oluna biləcəyi şəkildə saxlanarkən, həm də faylın saxlanması və ya ötürülməsi üçün lazım olan yaddaş sahəsinin miqdarını azaldır. Faylın sıxılmış versiyası adətən baxılmır və ya istifadə edilmir, bunun əvəzinə istifadə edilmədən əvvəl dekompressiya olunur.
Sıxılma alqoritmi, kompüterin orijinal faylı kodlaşdırması üçün istifadə etdiyi bir prosedurdur və nəticədə onu daha kiçik hala gətirir. Kompüter alimləri bu alqoritmləri araşdırır və daha sürətli işləyə bilən və ya giriş faylını daha kiçik edə biləcək daha yaxşılarını hazırlayırlar.
Sıxılmanın iki növü var:
- Zərərsiz: Fayldan heç bir məlumat çıxarılmır. Bir faylı orijinala qaytarmaq üçün faylda orijinala bənzər bir şey saxlanılır.
- Zərərli: Məlumat fayldan silinə bilər. Fayl dekompressiyası zamanı orijinaldan bir qədər fərqli bir faylla nəticələnəcək şəkildə sıxılmışdır.
Ümumiyyətlə, insan gözləri və qulaqları şəkillərdə və səslərdə, xüsusən də monitorda görünən və ya dinamiklər üzərindən çalınan cüzi qüsurları hiss etmir. Zərərli sıxılma tez-tez mediaya fayda verir, çünki daha kiçik fayl ölçüləri ilə nəticələnir və insanlar dəyişdirilmiş məlumatlarla orijinal versiya arasındakı fərqi deyə bilmirlər. Sənədlər, qeydlər və proqramlar kimi toxunulmaz qalmalı olan fayllar üçün isə itkisiz sıxılma lazımdır.
GIF, PNG və JPEG kimi görüntü formatlarının əksəriyyəti zərərli sıxılma tətbiq edir. Ümumiyyətlə keyfiyyəti nə qədər qorumaq istədiyinizə özünüz qərar verə bilərsiniz. Daha aşağı bir keyfiyyət daha kiçik bir sənədlə nəticələnir, ancaq dekompressiyadan sonra kobud kənarlar və ya rəngsizləşmə kimi nəticələr görə bilərsiniz. Yüksək keyfiyyət orijinal görünüşə bənzəyəcək, ancaq fayl ölçüsü orijinala daha yaxın olacaqdır.
Linux, faylları sıxışdırmaq üçün bir neçə vasitə təmin edir; ən çox yayılanı gzip dir. Burada sıxılmadan əvvəl və sonra bir fayl göstəririk:
sysadmin@localhost:~$ cd Documents
sysadmin@localhost:~/Documents$ ls -l longfile*
-rw-r--r-- 1 sysadmin sysadmin 66540 Dec 20 2017 longfile.txt
sysadmin@localhost:~/Documents$ gzip longfile.txt
sysadmin@localhost:~/Documents$ ls -l longfile*
-rw-r--r-- 1 sysadmin sysadmin 341 Dec 20 2017 longfile.txt.gz
Əvvəlki nümunədə longfile.txt adlı bir fayl var ki, bu da 66540 baytdır. Fayl yeganə arqument olaraq faylın adı ilə gzip əmrini deməklə sıxılır. Bu əmr tamamlandıqdan sonra orijinal sənəd yox oldu və .gz fayl uzantısı olan sıxılmış bir versiya öz yerində qaldı. İndi fayl ölçüsü 341 baytdır.
gzip əmri bu məlumatı, burada göstərildiyi kimi –l seçimi istifadə edərək təmin edəcək:
sysadmin@localhost:~/Documents$ gzip -l longfile.txt.gz
compressed uncompressed ratio uncompressed_name
341 66540 99.5% longfile.txt
Sıxılma nisbəti 99.5% olaraq verilir, bundan əlavə, fayl açıldıqda yenidən longfile.txt adlanacaqdır.
Sıxılmış fayllar ya gzip əmrindən və ya gzip –d əmrindən istifadə edərək orijinal formasına bərpa edilə bilər. Bu proses dekompressiya adlanır. Gunzip öz işini etdikdən sonra longfile.txt faylı orijinal ölçüsünə və fayl adına bərpa olunur.
sysadmin@localhost:~/Documents$ gunzip longfile.txt.gz
sysadmin@localhost:~/Documents$ ls -l longfile*
-rw-r--r-- 1 sysadmin sysadmin 66540 Dec 20 2017 longfile.txt
Buna fikir verin : gunzip əmri, gzip ‘i düzgün parametrlərlə çağıran bir skriptdir .
gzip və gunzip üçün faktiki olaraq eyni şəkildə işləyən digər əmrlər də var. bzip2 və bunzip2 , xzvə unxz var.
gzip əmrində Lempel-Ziv məlumatların sıxılma alqoritmi istifadə olunur, bzip utilitləri isə daha çox CPU vaxtı hesabına gzip -dən kiçik faylları sıxışdıra bilən Burrows-Wheeler blok çeşidlənməsi adlı fərqli bir sıxılma alqoritmindən istifadə edir. Bu fayllar bir .gz uzantısı əvəzinə .bz və ya .bz2 uzantısına sahib olduqları üçün fərqləndirilə bilər.
xz və unxz alətləri Lempel-Ziv-Markov (LZMA) zəncir alqoritmindən istifadə etdikləri üçün gzip və gunzip kimi funksionaldır, bu da ümumiyyətlə əlaqəli daha yaxşı sıxılma nisbətlərini təmin edərkən gzip ilə paralel olan aşağı dekompressiya CPU vaxtı ilə nəticələnə bilər. xz əmri ilə sıxılmış fayllar .xz uzantısından istifadə edir.
9.3 Arxivləşdirmə
Kiməsə göndərmək üçün bir neçə faylınız olsa, hər birini ayrı-ayrılıqda sıxa bilərsiniz. Sıxılmamış sənədləri göndərdiyinizə nisbətdə daha az həcmə malik məlumat əldə edərdiniz, lakin yenə də bir anda bir çox faylla işləməli olacaqsınız.
Arxivləşdirmə bu problemin həllidir. Arxivləşdirmək üçün ənənəvi UNIX proqramı TApe aRchive -ın qısa bir forması olan tar adlanır. tar əmri bir neçə fayl götürür və ötürülmənin digər ucundakı orijinal sənədlərə yenidən bölünə bilən bir çıxış faylı yaradır.
tar komandasının üç rejimi var:
- Create: Bir sıra sənədlərdən yeni bir arxiv hazırlayın.
- Extract: Bir və ya daha çox faylı arxivdən çıxarın.
- Siyahı: Arxivin məzmununu çıxartmadan göstərin..
Rejimi yadda saxlamaq, istədiyinizi etmək üçün lazım olan komanda sətri seçimlərini anlamaq üçün vacibdir. Rejimə əlavə olaraq, bir komanda sətrinə bir çox fayl adını daxil edə bildiyiniz üçün arxivin adını harada göstərəcəyinizi unutmayın.
9.3.1 Create rejimi
tar -c [-f ARCHIVE] [OPTIONS] [FILE...]
tar əmri ilə arxiv yaratmaq üçün iki adlandırılmış seçim tələb olunur:
| Option | Function |
-c | Arxiv yaradın. |
-f ARCHIVE | Arxiv sənədindən istifadə edin. Archive arqumenti, ortaya çıxan arxiv sənədinin adı olacaqdır. |
Aşağıdakı nümunə, bir tarball adlanan bir çox fayldan yaradılan bir tar faylını göstərir. Birinci arqument alpha_files.tar adlı bir arxiv yaradır. * arxivdə alpha ilə başlayan bütün faylları daxil etmək üçün istifadə olunur:
sysadmin@localhost:~/Documents$ tar -cf alpha_files.tar alpha*
sysadmin@localhost:~/Documents$ ls -l alpha_files.tar
-rw-rw-r-- 1 sysadmin sysadmin 10240 Oct 31 17:07 alpha_files.tar
alpha_files.tar -ın son ölçüsü 10240 baytdır. Normalda, tarball faylları, orijinal faylları yenidən hazırlamaq barədə yerüstü məlumatlara görə birləşdirilmiş giriş sənədlərindən bir qədər böyükdür. Tarballar həm gzip istifadə edərək ,həm də -z seçimi ilə tar istifadə edərək daha asan ötürmə üçün sıxıla bilər.
| Option | Function |
-z | Compress (or decompress) an archive using the gzip command. |
The next example shows the same command as the prior example, but with the addition of the -z seçimi var.
sysadmin@localhost:~/Documents$ tar -czf alpha_files.tar.gz alpha*
sysadmin@localhost:~/Documents$ ls -l alpha_files.tar.gz
-rw-rw-r-- 1 sysadmin sysadmin 417 Oct 31 17:15 alpha_files.tar.gz
Çıxış tarballnın özündən daha kiçikdir və ortaya çıxan fayl sıxılma detallarını görmək üçün istifadə edilə bilən gzip əmri ilə uyğun gəlir. Sıxılmayan fayl ayrı bir addımda büzdüyünüz təqdirdə eyni ölçüdə olur:
Fayl uzantıları bir faylın özünü aparma formasına təsir göstərməsə də, tarballar üçün .tar və sıxılmış tarballlar üçün .tar.gz və ya .tgz istifadə edilir.
bzip2 sıxılma gzip əvəzinə -j seçimini -z seçimi ilə əvəz edilərək.tar.bz2, .tbz, vəya .tbz2 fayl uzantısını istifadə edir.
| Option | Function |
-j | Bzip2 əmrini istifadə edərək arxivi sıxın (və ya açın). |
Məsələn, School qovluğunu arxivləşdirmək və sıxışdırmaq üçün:
sysadmin@localhost:~/Documents$ tar -cjf folders.tbz School
9.3.2 Siyahı rejimi
tar -t [-f ARCHIVE] [OPTIONS]
Bir tar arxivi, sıxılmış və ya sıxılmamış olmasından asılı olmayaraq, -t seçimini istifadə edərək içindəki komponetləri görə bilərsiniz. Növbəti nümunə üç seçimi göstərir:
| Option | Function |
-t | Faylların siyahısını göstərmə |
-j | Bir bzip2 əmri ilə dekompressiya |
-f ARCHIVE | Verilən arxiv üzərində işləmə |
folders.tbz arxivinin tərkibini göstərmək üçün:
sysadmin@localhost:~/Documents$ tar -tjf folders.tbz
School/
School/Engineering/
School/Engineering/hello.sh
School/Art/
School/Art/linux.txt
School/Math/
School/Math/numbers.txt
Nümunədə, School/ qovluğu fayllara prefiks edilir. tar əmri sıxılanda avtomatik alt qovluqlara dönəcək və yol məlumatlarını arxivdə saxlayacaq.
sysadmin@localhost:~/Documents$ bunzip2 -c folders.tbz | tar -t
School/
School/Engineering/
School/Engineering/hello.sh
School/Art/
School/Art/linux.txt
School/Math/
School/Math/numbers.txt
Pipelinenin sol tərəfi bunzip2 –c folders.tbz, faylı dekompressiya edir, lakin –c seçimi çıxışı ekrana göndərir. Çıxış tar -t -a yönləndirilir. faylı –f ilə göstərməsəniz, tar bu vəziyyətdə sıxılmayan fayl kimi standart girişdən oxuyacaqdır.
Qeyd: Yuxarıdakı nümunələr tar komandasının alt kateqoriyaya təkrarlama qabiliyyətini nümayiş etdirmək üçün hazırlanmışdır.
9.3.3 Extract rejimi
tar -x [-f ARCHIVE] [OPTIONS]
Arxiv yaratmaq çox sayda sənədin ötürülməsini asanlaşdırmaq üçün istifadə olunur. Faylları çıxarmazdan əvvəl onları Downloads qovluğuna köçürün:
sysadmin@localhost:~/Documents$ cd ~
sysadmin@localhost:~$ cp Documents/folders.tbz Downloads/folders.tbz
sysadmin@localhost:~$ cd Downloads
Sonda arxivi başqa bir qovluğa kopyaladıqdan sonra –x seçimi ilə çıxara bilərsiniz.
| Option | Function |
-x | Faylların siyahısını göstərmə |
-j | Bir bzip2 əmri ilə dekompressiya |
-f ARCHIVE | Verilən arxiv üzərində işləmə |
sysadmin@localhost:~/Downloads$ tar -xjf folders.tbz
sysadmin@localhost:~/Downloads$ ls -l
total 8
drwx------ 5 sysadmin sysadmin 4096 Dec 20 2017 School
-rw-rw-r-- 1 sysadmin sysadmin 413 Oct 31 18:37 folders.tbz
Orijinal fayl əlçatmazdır və yeni qovluq yaradılır. Qovluqun içərisində orijinal qovluqlar və sənədlər var.
sysadmin@localhost:~/Downloads$ cd School
sysadmin@localhost:~/Downloads/School$ ls -l
total 12
drwx------ 2 sysadmin sysadmin 4096 Oct 31 17:45 Art
drwx------ 2 sysadmin sysadmin 4096 Oct 31 17:47 Engineering
drwx------ 2 sysadmin sysadmin 4096 Oct 31 17:46 Math
-v bayrağını əlavə etdiyinizdə, emal olunmuş qovluqların geniş bir kopyaslnl alırsınız, bu prosesləri isləməyi asanlaşdırır:
| Option | Function |
-v | Emal olunmuş qovluqları daha rahat görün |
Nüvbəti nümunə –v seçiminin istifadəsini əks etdirir :
sysadmin@localhost:~/Downloads$ tar -xjvf folders.tbz
School/
School/Engineering/
School/Engineering/hello.sh
School/Art/
School/Art/linux.txt
School/Math/
School/Math/numbers.txt
–f bayrağın sonda saxlanması vacibdir, çünki tar bu seçimin ardınca gələn hərşeyin birinin adı olduğunu qəbul edir. Növbəti misalda, –f və –v bayraqları köçürüldü və bu, tar əmrinin v adlı bir qovluqda mövcud olmayan əməliyyat kimi interpretasiya olunmasına səbəb olar.
sysadmin@localhost:~/Downloads$ tar -xjfv folders.tbz
tar (child): v: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
Yalnız bəzi faylları arxivdən çıxarmaq istəyirsinizsə, əmrlərin sonuna adlarını əlavə edin, əksinə olaraq onlar arxivdəki adla tam uyğun olmalıdır və ya fayl tam adı istifadə etməlidirlər.
Aşağıdakı nümunə əvvəlki kimi eyni arxivi göstərir, ancaq yalnız School / Art / linux.txt faylını çıxarır. Əmrin nəticəsi (verbose rejimi –v bayrağı ilə istəndiyi kimi) yalnız bir fayl çıxarıldığını göstərir:
sysadmin@localhost:~/Downloads$ tar -xjvf folders.tbz School/Art/linux.txt
School/Art/linux.txt
tar komandası daha çox xüsusiyyətə malikdir, məsələn, müəyyən fayllar istisna olmaqla, fayl çıxarmaq zamanı fayl yollarından istifadə etmək və ya çıxarılan faylları birbaşa ekrana çıxarmaq. tar -ın dokumentasiyasında geniş məlumatlar var.

