نحوه فشرده سازی فایل ها در لینوکس با استفاده از دستور tar #
مقدمه #
این tarدستور در لینوکس امکان بایگانی و فشردهسازی فایلها و دایرکتوریها را فراهم میکند. این دستور همچنین با نام tape archive( tar) شناخته میشود و چندین فایل را در یک فایل بایگانی واحد با .tarپسوندی که میتواند فشرده شود تا در فضای دیسک صرفهجویی شود و انتقال فایلها و پشتیبانگیریها سادهتر شود، ترکیب میکند.
این مقاله نحوه استفاده از این tarدستور در لینوکس را برای انجام وظایف بایگانی و فشردهسازی فایل توضیح میدهد.
tarسینتکس دستور #
در زیر سینتکس دستور پایه آمده است tar:
$ tar [options] [archive-file] [file/directory]در داخل دستور فوق، رفتار دستور [options]را تغییر میدهد tar، [archive-file]نام فایل آرشیو را مشخص میکند و [file/directory]فایلها یا دایرکتوریهایی را که باید در آرشیو گنجانده شوند، مشخص میکند.
tarگزینههای فرمان #
| گزینه | توضیحات |
|---|---|
-c | یک آرشیو جدید ایجاد کنید. |
-x | استخراج فایلها از یک آرشیو. |
-v | حالت مفصل. نمایش پیشرفت در ترمینال. |
-f | نام فایل. نام فایل آرشیو را مشخص کنید. |
-z | بایگانی را با استفاده از gzip فشرده کنید. |
-j | بایگانی را با استفاده از bzip2 فشرده کنید. |
-J | فشردهسازی فایل با استفاده از xz. |
-t | فهرست کردن محتویات یک آرشیو. |
-r | فایلها را به آرشیو موجود اضافه کنید. |
-u | بهروزرسانی فایلها در یک بایگانی موجود. |
مثالهای عملی از tarفرمان #
- یک آرشیو tar جدید ایجاد کنید.کنسول
$ tar -cvf archive.tar file1.txt file2.txt directory/دستور بالا یک فایل جدید ایجاد میکند
archive.tarکه شامل فایلfile1.txt،file2.txtو تمام محتویات درون آن استdirectory/.خروجی:

tarبا استفاده از Gzip یک آرشیو فشرده جدید ایجاد کنید .کنسول$ tar -czvf archive.tar.gz file1.txt file2.txt directory/دستور بالا یک فایل جدید ایجاد میکند
archive.tar.gzو فشردهسازی با استفاده از Gzip را فعال میکند.خروجی:

- استخراج فایلها از آرشیو tar.کنسول
$ tar -xvf archive.tarدستور بالا تمام فایلها را از
archive.tarفایل مورد نظر به دایرکتوری کاری شما استخراج میکند.خروجی:

- استخراج فایلها از یک
tarآرشیو فشرده.کنسول$ tar -xzvf archive.tar.gzدستور بالا تمام فایلها را از
archive.tar.gzفایل فشردهسازی به دایرکتوری کاری استخراج میکند.خروجی:

- فهرست کردن تمام محتویات یک آرشیو tar.کنسول
$ tar -tvf archive.tarدستور بالا تمام محتویات فایل را
archive.tarبدون استخراج فهرست میکند.خروجی:

tarبا استفاده از Bzip یک فایل فشرده ایجاد کنید .کنسول$ tar -cjvf archive.tar.bz2 file1.txt file2.txt directory/دستور بالا
archive.tar.bz2با استفاده از این ابزار، یک فایل فشرده جدید ایجاد میکندbzip2.خروجی:

- استخراج فایلها از
tarآرشیو Bzipکنسول$ tar -xjvf archive.tar.bz2دستور بالا تمام فایلها را از
archive.tar.bz2دایرکتوری کاری شما استخراج میکند.خروجی:

tarبا استفاده از فرمت فشردهسازی، یک آرشیو جدید ایجاد کنیدxzipped.کنسول$ tar -cJvf archive.tar.xz file1.txt file2.txt directory/دستور بالا
archive.tar.xzبا استفاده از xz یک فایل فشرده جدید ایجاد میکند.خروجی:

- استخراج فایلها از یک
xzippedفایل آرشیو.کنسول$ tar -xJvf archive.tar.xzدستور بالا فایلها را از
archive.tar.xzفایل اصلی به دایرکتوری کاری شما استخراج میکند.خروجی:

- فایلهای جدید را به یک بایگانی tar موجود اضافه کنید.کنسول
$ tar -rvf archive.tar newfileدستور بالا فایل را به آرشیو
newfileموجود اضافه میکند .tararchive.tarخروجی:

- بهروزرسانی فایلها در یک بایگانی tar موجود.کنسول
$ tar -uvf archive.tar updatedfileدستور بالا اگر
updatedfileفایل موجود درarchive.tarآرشیو جدیدتر از نسخه موجود باشد، آن را بهروزرسانی میکند.خروجی:

سناریوهای پیشرفته استفاده #
- فایلها و دایرکتوریها را از
tarبایگانی حذف کنید.کنسول$ tar --exclude='*.log' -cvf archive.tar directory/
دستور بالا یک
archive.tarفایل جدید ایجاد میکند که شامل همه فایلها به جز.logفایلهای موجود درdirectory/.خروجی:

- فشردهسازی و بایگانی فایلها در یک مکان دور.کنسول
$ tar -czvf - directory/ | ssh user@remotehost "cat > /path/to/destination/archive.tar.gz"
دستور بالا
directory/آن را فشرده کرده وremotehostبا استفاده از SSH منتقل میکند.خروجی:
negarnovin_user@negarnovin:~$ tar -czvf - /home/negarnovin_user/dir1 | ssh negarnovin_user@123.84.123.123 "cat > /home/negarnovin_user/dir2/archive.tar.gz" tar: Removing leading `/' from member names /home/negarnovin_user/dir1/ /home/negarnovin_user/dir1/file2.txt /home/negarnovin_user/dir1/file1.txt /home/negarnovin_user/dir1/file3.txt The authenticity of host '123.84.123.123 (123.84.123.123)' can't be established. ED25519 key fingerprint is SHA256:kfJi2tl589s4r3mdDLq32Ziksl1j5f2sXM6aUw. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes negarnovin_user@139.84.176.145's password: negarnovin_user@negarnovin:~$ - استخراج یک فایل خاص از آرشیو tar.کنسول
$ tar -xvf archive.tar path/to/fileدستور فوق
path/to/fileاز استخراج میشودarchive.tar.خروجی:

- صحت یک آرشیو tar را تأیید کنید.کنسول
$ tar -tvf archive.tar > /dev/nullدستور فوق تمام محتویات فایل را فهرست کرده
archive.tarو خروجی را برای تأیید صحت فایل حذف میکند. - برای بایگانی فایلهای خاص
tarاز with استفاده کنید .findکنسول$ find . -name "*.txt" -print0 | tar -cvf archive.tar --null -T -
دستور بالا تمام
.txtفایلها را پیدا کرده و آنها را درarchive.tarفایل بایگانی میکند.خروجی:

- استخراج فایلها در یک دایرکتوری خاصکنسول
$ tar -xvf archive.tar -C /path/to/directory/دستور بالا فایلها را از استخراج
archive.tarمیکند/path/to/directory/.خروجی:

- ایجاد یک آرشیو tar جدید که به چندین بخش تقسیم شده استکنسول
$ tar -cvf - directory/ | split -b 5M - archive_part_
دستور بالا با استفاده از files from یک آرشیو tar جدید ایجاد میکند
directory/و آن را به چندین volume۵ MBبرای هر فایل تقسیم میکند.خروجی:

نتیجه گیری #
tarشما از این دستور برای بایگانی و فشردهسازی فایلها، مدیریت پشتیبانگیریها و بهینهسازی فضای ذخیرهسازی در سیستم خود استفاده کردهاید . برای مشاهده گزینههای بیشتر دستور، man tarدستور را اجرا کنید تا tarصفحه راهنما را مشاهده کنید.















