فشرده سازی در لینوکس

۲۰۲ بازدید

امروزه حتی با وجود هاردها و دستگاههای ذخیره سازی با حجم زیاد , فشرده سازی همچنان یکی از موارد مهم در همه سیستم عامل ها محسوب می شود , برخی از مزایای فشرده سازی عبارت است از:
کاهش حجم اشغالی , راحتی در انتقال , راحتی در به اشتراک گذاری , افزایش سرعت انتقال ( تصور کنید که بخواهید 1000 فایل یک مگابایتی در مقایسه با یک فایل 1 گیگابایتی جا به جا کنید).
معمولترین ابزارهای فشرده سازی در لینوکسgzip , bzip2 وzipمی باشد که در بین کاربران عادیzip محبوبیت و کاربرد بیشتری دارد ولی در دنیای لینوکس 2 ابزار دیگر کاربرد و مقبولیت بیشتری دارند.
خروجی پسوند هر کدام از ابزارهای بالا به شرح زیر می باشد:

bzip2=bz2
gzip=gz
zip=zip

شاید در ذهن شما این سوال آمده است که "ما اغلب با پسوندهایی نظیرtar.gz وtar.bz2 روبرو هستیم , پس جایگاه و کاربردtar چیست؟"
در پاسخ به این سوال باید گفت کهtar ابزار فشرده سازی محسوب نمی شود و هیچ گونه فشرده سازی برای ما انجام نمی دهد بلکه ابزاری جهت تهیه پشتیبان و آرشیو است.tar در واقع یک ابزار کمکی برایgzip وbzip2 در امر فشرده سازی محسوب می شود از آنجائیکه این 2 ابزار قادر به فشرده سازی چندین فایل و دایرکتوری در یک فایل واحد نمی باشند , در واقع این ابزارها برای هر فایل, فایل فشرده شده جداگانه می سازند در صورتیکهtar امکان گرد هم آوردن چندین فایل و دایرکتوری در یک فایل را به آسانی در اختیار ما قرار می دهد.


نصب ابزارهای مورد نیاز در صورت لزوم:

معمولا ابزارهایtar وgzip در اکثریت لینوکس ها بطور پیش فرض نصب می باشند.
نصب در دبین:

apt-get install bzip2 zip unzip

نصب در ردهت:

yum install bzip2 zip unzip



استفاده از ابزار zipو unzip:


zip بر خلاف دو ابزار دیگر که فقط قابلیت فشرده سازی را دارند , امکان تهیه آرشیو هم داراست و نیازی به ابزارهای کمکی دیگر ندارد.

فشرده سازی با استفاده ازzip :

حالت معمول فشرده سازی باzip ; در این مثال "*" نشان دهنده همه فایل های موجود در دایرکتوری جاری می باشد , شما می توانید آدرس فایل و دایرکتوری های مختلف را بجای آن وارد کنید:

Root:~# zip website.zip *
adding: ali/ (stored 0%)
adding: file1.txt (stored 0%)
adding: file2.txt (deflated 50%)
Root:~#

در مثال بالا فایل ها و دایرکتوری های واقع در زیردایرکتوری ها فشرده نمی شوند و اصطلاحا برگشتی(recursively) عمل نمی کند , برای حل این مشکل از گزینهr- همراه باzip استفاده می کنیم:

Root:~#zip -r website.zip *
adding: ali/ (stored 0%)
adding: ali/navid/ (stored 0%)
adding: ali/navid/reza (stored 0%)

adding: file1.txt (stored 0%)
adding: file2.txt (deflated 50%)
Root:~#


برای اینکه فایل های فشرده شده را رمزگذاری کنیم به 2 صورت می توان عمل کرد:
1-
رمز پرسیده خواهد شد

Root:~# zip -r website.zip * -e
Enter password:
Verify password:

adding: ali/ (stored 0%)
adding: ali/navid/ (stored 0%)
adding: ali/navid/reza (stored 0%)
adding: file1.txt (stored 0%)
adding: file2.txt (deflated 50%)
Root:~#



2- رمز مورد نظر را همزمان وارد می کنیم
 

Root:~# zip -r -P www.website.ir website.zip *
adding: ali/ (stored 0%)
adding: ali/navid/ (stored 0%)
adding: ali/navid/reza (stored 0%)
adding: file1.txt (stored 0%)
adding: file2.txt (deflated 50%)
Root:~#



خارج کردن از حالت فشرده با استفاده از دستورunzip :

اگر در زمان باز کزدن فایل zipبرخی از فایل ها وحود داشته باشند در مورد جایگزنی آنها از ما سوال خواهد پرسید :

 

Root:~#unzip website.zip
Archive: website.zip
[website.zip] ali/ password:
replace ali/navid/reza? [y]es
, [n]o, [A]ll, [N]one, [r]ename: y
extracting: ali/navid/reza
replace file1.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: n
replace file2.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: A
inflating: file2.txt
Root:~#

در غیر اینصورت سوالی پرسیده نخواهد شد :

Root:~# unzip website.zip
Archive: website.zip
[website.zip] ali/ password:
creating: ali/
creating: ali/navid/
extracting: ali/navid/reza
extracting: file1.txt
inflating: file2.txt
Root:~#

باز کردن فایل zipاز حالت فشرده در محل دیگری :

Root:~# unzip website.zip -d /website/
Archive: website.zip
[website.zip] ali/ password:
creating: /website/ali/
creating: /website/ali/navid/
extracting: /website/ali/navid/reza
extracting: /website/file1.txt
inflating: /website/file2.txt
Root:~#

خارج کردن یک فایل خاص :

Root:~# ls test/
Root:~# unzip website.zip file1.txt -d test/
Archive: website.zip
extracting: test/file1.txt
Root:~# ls test/
file1.txt
Root:~#

بدست آوردن اطلاعاتی در مورد فایل ها و دایرکتوری های موجود در فایل zip:

Root:~# unzip -v website.zip
Archive:  website.zip
Length   Method    Size  Ratio   Date   Time   CRC-32    Name
--------  ------  ------- -----   ----   ----   ------    ----
0  Stored        0   0%  07-18-08 04:08  00000000  ali/
0  Stored        0   0%  07-18-08 04:23  00000000  ali/navid/
0  Stored        0   0%  07-18-08 04:08  00000000  ali/navid/reza
0  Stored        0   0%  07-18-08 03:53  00000000  file1.txt
12  Defl:N        6  50%  07-18-08 03:54  f2b1e508  file2.txt
--------          -------  ---                            -------
12                6  50%                            5 files
Root:~#

بدست آوردن لیست فایل ها و دایرکتوری های موجود در فایل zip:



Root:~# unzip -l website.zip
Archive:  website.zip
Length     Date   Time    Name
--------    ----   ----    ----
0  07-18-08 04:08   ali/
0  07-18-08 04:23   ali/navid/
0  07-18-08 04:08   ali/navid/reza
0  07-18-08 03:53   file1.txt
12  07-18-08 03:54   file2.txt
--------                   -------
12                   5 files
Root:~#

اطمینان از سالم بودن فایل zip:

Root:~# unzip -t website.zip
Archive:  website.zip
[website.zip] ali/ password:
testing: ali/                     OK
testing: ali/navid/               OK
testing: ali/navid/reza           OK
testing: file1.txt                OK
testing: file2.txt                OK
No errors detected in compressed data of website.zip.
Root:~#

 

استفاده از ابزارgzip :

فشرده سازی یک فایل:

Root:~# ls
file1.txt
Root:~# gzip file1.txt
Root:~# ls
file1.txt.gz
Root:~#


همانطور که مشاهده می کنید فایل اصلی بواسطه تبدیل شدنش به فایل فشرده از بین می رود , برای اینکه فایل اصلی را بهمراه فایل فشرده داشته باشیم, بدین ترتیب عمل می کنیم:

Root:~# ls
file1.txt
Root:~# gzip -c
file1.txt > file1.txt.gz
Root:~# ls
file1.txt file1.txt.gz
Root:~#


می توانید همزمان آدرس چند فایل را وارد کنید:

Root:~# ls
file1.txt file2.txt
Root:~# gzip file1.txt file2.txt
Root:~# ls
file1.txt.gz file2.txt.gz
Root:~#

همانطور که مشاهده می کنید هر فایل بطور جداگانه فشرده شده است.

استفاده از tarبهمراهgzip این امکان را به ما می دهد تا همه فایل ها را در یک فایل فشرده کنیم و همچنین اصل فایل ها دست نخورده باقی ماند.

به چند روش می توان از این 2 ابزار در کنار یکدیگر استفاده کرد:

  1. ابتدا یک فایل آرشیو باtar ایجاد کنیم و سپس با ابزارgzip آن یک فایل را فشرده کنیم:

tar cvf website.tar file1.txt file2.txt test/
gzip website.tar

همانطور که در خط اول قابل مشاهده می باشد می توان همزمان آدرس چندین فایل و داریکتوری را داد.

  1. یک فایل آرشیو ایجاد و همزمان خروجی را برایgzip ارسال کنیم:

tar cvf website.tar file1.txt file2.txt test/ | gzip

  1. ساده ترین روش با استفاده از دستورtar در یک مرحله:

tar cvfz website.tar.gz file1.txt file2.txt test/


نکته:
برای اطمینان از اینکه فایل فشرده شده سالم باشد , این دستور را اجرا می کنیم:

gzip -tv website.tar.gz


باز کردن فایل های فشردهgz یاtar.gz :

فایل های فشرده شده توسطgzip را به 2 طریق می توان از حالت فشرده خارج کرد:

1-
استفاده از دستور gzip -d

Root:~# ls
file1.txt.gz
Root:~# gzip -d file1.txt.gz
Root:~# ls
file1.txt
Root:~#


2-استفاده از ابزار gunzip

Root:~# ls
file1.txt.gz
Root:~#gunzip file1.txt.gz
Root:~# ls
file1.txt
Root:~#


برای اینکه فایل های فشرده توسطtar وgzip را ازحالت فشرده خارج کنیم 3 راه پیش رو داریم:

  1. در دو مرحله , ابتدا فایل را از حالت فشرده خارج کنیم و سپس از حالت آرشیو

gzip -d website.tar.gz
tar xvf website.tar
or
gunzip website.tar.gz
tar xvf website.tar

  1. هم زمان که باgzip از حالت فشرده خارج می کنیم , خروجی را بهtar ارسال می کنیم:

gzip -dc tar xvf website.tar.gz | tar -x

  1. ساده ترین و بهترین روش در یک مرحله و با دستورtar :

tar xvfz website.tar.gz





استفاده از ابزارbzip2 :

شیوه استفاده از این ابزار کاملا مشابهgzip می باشد.

فشرده سازی یک فایل:

Root:~# ls
file1.txt
Root:~# bzip2 file1.txt
Root:~# ls
file1.txt.bz2
Root:~#


همانطور که مشاهده می کنید فایل اصلی بواسطه تبدیل شدنش به فایل فشرده از بین می رود , برای اینکه فایل اصلی را بهمراه فایل فشرده داشته باشیم, بدین ترتیب عمل می کنیم:

Root:~# ls
file1.txt
Root:~# bzip2 -c
file1.txt > file1.txt.bz2
Root:~# ls
file1.txt file1.txt.bz2
Root:~#


می توانید همزمان آدرس چند فایل را وارد کنید:

Root:~# ls
file1.txt file2.txt
Root:~# bzip2 file1.txt file2.txt
Root:~# ls
file1.txt.bz2 file2.txt.bz2
Root:~#

همانطور که مشاهده می کنید هر فایل بطور جداگانه فشرده شده است.

استفاده ازtar بهمراهbzip2 این امکان را به ما می دهد تا همه فایل ها را در یک فایل فشرده کنیم و همچنین اصل فایل ها دست نخورده باقی ماند.

به چند روش می توان از این 2 ابزار در کنار یکدیگر استفاده کرد:

  1. ابتدا یک فایل آرشیو باtar ایجاد کنیم و سپس با ابزارbzip2 آن یک فایل را فشرده کنیم:

tar cvf website.tar file1.txt file2.txt test/
bzip2 website.tar

همانطور که در خط اول قابل مشاهده می باشد می تواین همزمان آدرس چندین فایل و داریکتوری را بدهیم.

  1. یک فایل آرشیو ایجاد و همزمان خروجی را برایbzip2 ارسال کنیم:

tar cvf website.tar file1.txt file2.txt test/ | bzip2

  1. ساده ترین روش با استفاده از دستورtar در یک مرحله:

tar cvfj website.tar.bz2 file1.txt file2.txt test/


نکته:
برای اطمینان از اینکه فایل فشرده شده سالم باشد , این دستور را اجرا می کنیم:

bzip2 -tv website.tar.bz2



باز کردن فایل های فشردهbz2 یاtar.bz2 :

فایل های فشرده شده توسطbzip2 را به 2 طریق می توان از حالت فشرده خارج کرد:

1-
استفاده از دستور bzip2 -d

Root:~# ls
file1.txt.gz
Root:~#bzip2 -d file1.txt.gz
Root:~# ls
file1.txt
Root:~#


2-استفاده از ابزارbunzip2

Root:~# ls
file1.txt.gz
Root:~#bunzip2 file1.txt.gz
Root:~# ls
file1.txt
Root:~#


برای اینکه فایل های فشرده توسطtar وbzip2 را ازحالت فشرده خارج کنیم 3 راه پیش رو داریم:

  1. در دو مرحله , ابتدا فایل را از حالت فشرده خارج کنیم و سپس از حالت آرشیو

bzip2 -d website.tar.gz
tar xvf website.tar
or
bunzip2 website.tar.gz
tar xvf website.tar

  1. هم زمان که باbzip2 از حالت فشرده خارج می کنیم , خروجی را بهtar ارسال می کنیم:

bzip2 -dc tar xvf website.tar.gz | tar -x

  1. ساده ترین و بهترین روش در یک مرحله و با دستور tar:

tar xvfjwebsite.tar.gz

نکته:
وقتی که از دستورtar استفاده می کنیم برای آنکه فایل در محلی دیگر از حالت فشرده خارج شود بدین ترتیب می توان عمل کرد:

tar xvfz website.tar.gz -C /path/to/extract/


با استفاده ازtar و گزینه u- می توان فایل آرشیو را بروز کرد ولی این کار برای فایل های آرشیوی فشرده شده قابل انجام نیست.

نکته مهم:
سطوح مختلفی برای فشرده سازی وجود دارد , این سطوح با اعداد 0 الی 9 نشان داده می شوند.هر چه اعداد بزرگتر می شود , فشرده سازی بیشتری صورت می گیرد.در سطح 0 هیچ گونه فشرده سازی صورت نمی گیرد و همانندtar عمل می کند.با بالاتر رفتن سطح فشرده سازی میزان استفاده از منابع سیستم بیشتر شده و همچنین زمان آن هم بالاتر می رود.
سطح فشرده سازی پیش فرض 6 می باشد که ما می توانیم بر حسب نیاز این سطوح را تغییر دهیم , کافیست در زمان استفاده از دستورات فشرده سازی مثلا برای استفاده از سطح 8 گزینه 8- را اضافه کنید.

 

 

برگرفته از :  پرشین ادمین

(۰) دیدگاه