دستور Tar در لینوکس، مسئول فشردهسازی فایلها در سیستمعامل لینوکس است؛ جاییکه مدیریت و انتقال موثر دادهها بهسادگی ممکن میشود. دستور Tar – مخفف “Tape Archive” – ابزار قدرتمندی برای فشردهسازی و آرشیو دادهها است. در این راهنمای جامع، آموزش استفاده از دستور Tar در لینوکس را خواهیم داشت که به کمک سینتکس کلی آن شروع و انجام میشود.
فایل آرشیو در لینوکس چیست؟
فایل آرشیو (Archive File) فایلی است که از یک یا چند فایل دیگر، همراه با متادیتا تشکیل شده است. فایلهای آرشیو برای جمعآوری چند فایل داده با هم و ذخیره آنها در یک فایل واحد استفاده میشوند.
این فایلها برای حمل، ذخیرهسازی و فشرده کردن دادهها بهکار میروند تا استفاده از فضای انواع هارد ssd هاست و دیگر حافظهها کمتر از حالت غیرفشرده شود.
آموزش استفاده از دستور Tar در لینوکس
دستور Tar در لینوکس، بهشکل زیر نوشته میشود:
tar [options] [archive-file] [file or directory to be archived]
برای یادگیری عمیق و آموزش استفاده از دستور tar در لینوکس، باید این پارامترها را بشناسیم که بهشرح زیر هستند:
- Tar: فرمان اصلی؛
- [options]: پرچمها (Flags) یا تنظیمات اختیاری که رفتار فرمان Tar را تغییر میدهند؛
- [archive-file]: نام فایل آرشیوی که در حال ایجاد یا کار با آن هستید؛
- [file or directory to be archived]: فایل یا دایرکتوری که میخواهید در آرشیو قرار دهید.
لیست Options دستور Tar در لینوکس بهشکل زیر است:
Options | توضیحات |
-c | یک فایل آرشیو را با جمعآوری فایلها و دایرکتوریها و ادغام آنها با یکدیگر میسازد. |
x- | فایلها و دایرکتوریها را از یک آرشیو موجود استخراج میکند. |
-f | نام فایل آرشیو در حال ایجاد یا استخراج را مشخص میکند. |
-t | فایلها و دایرکتوریهای موجود در یک آرشیو را نمایش داده یا لیست میکند. |
-u | عمل اصلی آرشیو را انجام داده و فایلها یا دایرکتوریهای جدیدی را به آرشیو موجود اضافه میکند. |
-v | اطلاعات را بهشکل جامع نمایش و خروجی دقیقی را در طول فرآیند آرشیو یا استخراج ارائه میدهد. |
-A | چند فایل آرشیو را در یک آرشیو ادغام میکند. |
-z | هنگام ایجاد یک فایل Tar از فشردهسازی gzip استفاده میکند تا یک آرشیو فشرده با پسوند “tar.gz” ایجاد شود. |
-j | هنگام ایجاد یک فایل Tar از فشردهسازی bzip2 استفاده میکند که در نتیجه آن، یک فایل آرشیو فشرده با پسوند “.tar.bz2” ایجاد میشود. |
-W | یکپارچگی فایل آرشیو را تایید و خراب نشدن محتوای آن را تضمین میکند. |
-r | بدون ساخت دوباره تمام فایل آرشیو، فایلها یا دایرکتوریها را با یک آرشیو موجود بهروز یا محتوای آن را به فایل فعلی اضافه میکند. |
حال که با پارامترها و دستور کلی آشنا شدیم، باید بهسراغ آموزش استفاده از دستور Tar در لینوکس برویم. در ادامه به چند نمونه اشاره خواهیم کرد.
بیشتر بخوانید: دستور cut در لینوکس + کاربردهای پیشرفته
1. ایجاد یک دایرکتوری کامل یا فشردهسازی یک فایل
از فرمان زیر برای فشردهسازی کل دایرکتوری یا یک فایل واحد با استفاده از دستور Tar در لینوکس استفاده میکنیم. این دستور باعث فشردهسازی دایرکتوریهای دیگر در همان دایرکتوری مشخصشده هم میشود؛ به عبارت دیگر، این فرمان بهصورت بازگشتی کار میکند.
tar -czvf name-of-archive.tar.gz /path/to/directory-or-file
- -c: ساخت یک آرشیو
- -z: فشردهسازی آرشیو با gzip
- -v: نمایش پیشرفت در ترمینال، حین ایجاد آرشیو. همچنین بهعنوان حالت “verbose” هم شناخته میشود. v همیشه در این دستورات اختیاری است، اما بهکار بردن آن پیشرفت روند را نشان میدهد و مفید خواهد بود.
- -f: تعیین نام فایل آرشیو
مثال:
فرض کنید یک دایرکتوری به نام “stuff” در دایرکتوری فعلی دارید و میخواهید آن را در فایلی به نام archive.tar.gz ذخیره کنید. برای انجام این کار، باید دستور زیر را اجرا کنید:
tar -czvf archive.tar.gz stuff
در حالتی دیگر، فرض کنید یک دایرکتوری در مسیر /usr/local/something روی سیستم فعلیتان وجود دارد و میخواهید آن را به فایلی به نام archive.tar.gz ارسال و همزمان فشرده کنید. دستور زیر برای این کار استفاده میشود:
tar -czvf archive.tar.gz /usr/local/something
2. فشردهسازی چند دایرکتوری یا فایل بهطور همزمان
درحالیکه دستور Tar در لینوکس اغلب برای فشردهسازی یک دایرکتوری استفاده میشود، اما میتوانید از آن برای فشرده کردن چند دایرکتوری، فایل یا هر دو استفاده کنید.
در این حالت، باید فقط لیستی از فایلها یا دایرکتوریها را بهجای یک دایرکتوری ارائه دهید. برای مثال، فرض کنید میخواهید دایرکتوری /home/ubuntu/Downloads، پوشه /usr/local/stuff و فایل /home/ubuntu/Documents/notes.txt را فشرده کنید. پس دستور زیر را نوشته و اجرا کنید:
tar -czvf archive.tar.gz /home/ubuntu/Downloads /usr/local/stuff /home/ubuntu/Documents/notes.txt
3. حذف دایرکتوریها و فایلها از یک بخش کلی
در برخی موارد، ممکن است بخواهید کل دایرکتوری را فشرده کنید؛ اما فایلها و دایرکتوریهای خاصی را از آن حذف کنید. در این حالت میتوانید با اضافه کردن یک سوئیچ –exclude برای هر دایرکتوری یا فایلی که میخواهید حذف کنید، به هدفتان برسید.
برای مثال، ما میخواهیم مسیر /home/ubuntu را فشرده کنیم؛ اما نمیخواهیم دایرکتوریهای /home/ubuntu/Downloads و /home/ubuntu/.cache آن را در فرآیند فشردهسازی قرار دهیم. پس فرمان زیر را مینویسیم و سپس اجرا میکنیم:
tar -czvf archive.tar.gz /home/ubuntu --exclude=/home/ubuntu/Downloads --exclude=/home/ubuntu/.cache
سوئیچ –exclude بسیار قدرتمند است؛ چون نام دایرکتوریها و فایلها را نمیگیرد؛ بلکه الگوها را پذیرفته و از آنها تبعیت میکند. کارهای خیلی بیشتری هم میتوانید با این دستور انجام دهید. بهعنوان مثال، میتوانید یک دایرکتوری کامل را آرشیو و همه فایلهای mp4. را با دستور زیر از آن حذف کنید:
tar -czvf archive.tar.gz /home/ubuntu --exclude=*.mp4
4. استخراج یک فایل Tar
هنگامیکه آرشیوی در هاست لینوکس ، هاست وردپرس یا دیگر هاستها دارید، میتوانید آن را با دستور Tar در لینوکس استخراج (Extract) کنید. دستور زیر نمونهای از این کاربرد است که محتویات archive.tar.gz را در دایرکتوری فعلی استخراج میکند.
tar -xzvf archive.tar.gz
این دستور همان فرمان ایجاد آرشیو است که پیشتر استفاده کردیم؛ با این تفاوت که سوئیچ -x جایگزین سوئیچ -c شده است. این سوئیچ مشخص میکند که میخواهید یک آرشیو را بهجای ایجاد، استخراج کنید.
ممکن است هنگام استخراج، تمایل به قرار دادن محتویات آرشیو در یک دایرکتوری خاص داشته باشید. پس میتوانید این کار را با اضافه کردن سوئیچ -C به انتهای دستور انجام دهید.
برای مثال، دستور زیر محتویات فایل archive.tar.gz را در پوشه /tmp استخراج میکند.
tar -xzvf archive.tar.gz -C /tmp
اگر فایل هدفتان با برنامه bzip2 فشرده شده است، باید “z” در دستورات بالا را با “j” جایگزین کنید.
بیشتر بخوانید: تفاوت هاست لینوکس و ویندوز چیست و کدام بهتر است؟
4. Untar فایلهای .tar، .tar.gz و .tar.tbz
دستور زیر چند فایل را از آرشیو tar، tar.gz و tar.bz2 استخراج و Untar میکند.
فرمانهای جدول پایین نمونهای برای استخراج فایلهایی با نام “fileA” و “fileB” از فایلهای آرشیوشده قبلی است.
tar xvf file.tar "fileA" "fileB" tar zxvf file1.tar.gz "fileA" "fileB"tar jxvf file2.tar.tbz "fileA" "fileB"
بیشتر بخوانید: آموزش دستور find در لینوکس برای جستجوی فایل ها
5. بهروزرسانی فایل با دستور Tar در لینوکس
برای بهروزرسانی یک فایل در لینوکس با کمک دستور Tar و اضافه کردن محتوای جدید به فایل موجود، از دستور زیر استفاده کنید:
tar rvf file.tar *.c
جدیدترین روش فشردهسازی با دستور Tar در لینوکس
درحالیکه فشردهسازی gzip اغلب برای ساخت فایلهای .tar.gz یا .tgz استفاده میشود، اما مایلیم در زمینه آموزش استفاده از دستور Tar در لینوکس، فشردهسازی bzip2 را هم معرفی کنیم.
این فرمت به شما امکان ایجاد فایلهای فشردهشده با جدیدترین برنامه، یعنی bzip2 را میدهد. اگر با این برنامه فایلهای لینوکس را فشرده کنید، پسوندهای .tar.bz2، .tar.bz یا .tbz. را در انتهای نام آنها خواهید دید.
Gzip سریعتر از Bzip2 است؛ اما میزان فشردهسازی آن کمتر از این روش جدید است. بنابراین یک فایل نسبتا بزرگ تحویل میگیرید.
Bzip2 کندتر از Gzip است؛ اما فشردهسازی بیشتری انجام میدهد و حجم فایلتان کمتر خواهد بود.
برای انجام این کار، فقط پارامتر -z در gzip را با -j – که مختص bzip2 است – جایگزین کنید.
بهعنوان مثال، در اولین مثالی که برای فشردهسازی دایرکتوری stuff ارائه کردیم، دستور زیر را اجرا کنید تا فشردهسازی با Bzip2 انجام شود:
tar -cjvf archive.tar.bz2 stuff
جمع بندی
دستور Tar در لینوکس، روشی برای فشردهسازی فایلها است. این دستور از دو روش Gzip و Bzip2 پشتیبانی میکند. با تغییر پارامترها در بخش Options، میتوانید بهسادگی بین حالتهای مختلف فشردهسازی سوئیچ کرده و از تکنیکهای این دستور، نهایت استفاده را ببرید.
شما در زمینه آموزش استفاده از دستور Tar در لینوکس، چه سوالاتی دارید که در این مقاله پاسخی برای آنها نیافتید؟ آنها را همین حالا در بخش نظرات بنویسید تا کارشناسان فنی ما در ایران سرور، پاسخ شما را بدهند.
سوالات متداولی که شما میپرسید
- دستور Tar در لینوکس چه کاری انجام میدهد؟
فشردهسازی فایلها وظیفه اصلی این دستور است.
- آیا استفاده از دستور Tar در لینوکس سخت و پیچیده است؟
خیر. اسکریپتهای Command Line لینوکس ساده و سریع هستند که دستور Tar یکی از آنها است.
- چگونه فایل یا دایرکتوری را با Tar در لینوکس فشرده کنیم؟
دستور کلی tar [options] [archive-file] [file or directory to be archived] است که با جایگذاری پارامترهای خودتان در کادرهای این فرمان، به دستور نهایی و اجرای فشردهسازی میرسید.
منابع: