TAR(1) General Commands Manual TAR(1)

tar — دستکاری و مدیریت بایگانیهای پرونده

tar [bundled-flags ⟨args⟩] [⟨file⟩ | ⟨pattern⟩ ...] tar {-c} [options] [files | directories] tar {-r | -u} -f archive-file [options] [files | directories] tar {-t | -x} [options] [patterns]

tar پرونده‌های بایگانی جریانی را ایجاد و دستکاری می‌کند. این پیاده‌سازی می‌تواند از تصاویر cdrom استاندارد ISO 9660 و پرونده‌های tar، pax، cpio، zip، jar، ar، xar، rar، rpm و 7-zip استخراج کند و می‌تواند بایگانی‌های tar، pax، cpio، ar، zip، 7-zip و shar را بسازد.

شکل نخست خلاصه دستور یک کلمهٔ گزینهٔ “bundled” را نشان می‌دهد. این کاربرد برای سازگاری با پیاده‌سازی‌های قدیمی فراهم شده است. برای جزئیات بیشتر به بخش سازگاری (COMPATIBILITY) در ادامه مراجعه کنید.

سایر شکل‌های خلاصه دستور، کاربرد ترجیحی را نشان می‌دهند. نخستین گزینه برای tar یک نشانگر حالت از فهرست زیر است:

یک بایگانی جدید حاوی موارد مشخص‌شده ایجاد می‌کند. شکل طولانی این گزینه --create است.
مانند -c است، اما ورودی‌های جدید به انتهای بایگانی افزوده می‌شوند. توجه داشته باشید که این ویژگی فقط روی بایگانی‌های فشرده‌نشده ذخیره‌شده در پرونده‌های معمولی کار می‌کند. گزینهٔ -f الزامی است. شکل طولانی این گزینه --append است.
فهرست کردن محتویات بایگانی در stdout. فرم طولانی این گزینه عبارت است از --list.
مانند -r, اما ورودی‌های جدید تنها در صورتی اضافه می‌شوند که تاریخ تغییر آن‌ها جدیدتر از ورودی متناظر در بایگانی باشد. توجه داشته باشید که این ویژگی فقط روی بایگانی‌های فشرده‌نشده ذخیره‌شده در پرونده‌های معمولی کار می‌کند. گزینه -f الزامی است. فرم طولانی عبارت است از --update.
استخراج از بایگانی بر روی دیسک. اگر پرونده‌ای با نام یکسان بیش از یک بار در بایگانی ظاهر شود، هر نسخه استخراج خواهد شد و نسخه‌های بعدی بر روی نسخه‌های قبلی بازنویسی (جایگزین) می‌شوند. فرم طولانی این گزینه عبارت است از --extract.

در حالت‌های -c, -r, یا -u, هر پرونده یا دایرکتوری مشخص‌شده، به ترتیبی که در خط فرمان تعیین شده به بایگانی اضافه می‌شود. به‌طور پیشفرض، محتویات هر دایرکتوری نیز بایگانی می‌شوند.

در حالت استخراج یا فهرست، کل خط فرمان پیش از باز شدن بایگانی خوانده و تجزیه می‌شود. نام مسیرها یا الگوهای موجود در خط فرمان مشخص می‌کنند که کدام موارد در بایگانی باید پردازش شوند. الگوها، الگوهای تطبیق به سبک پوسته (globbing) هستند، همان‌طور که مستند شده در tcsh(1).

مگر اینکه صراحتاً خلاف آن ذکر شده باشد، گزینه‌ها در تمام حالت‌های کاری قابل اعمال هستند.

archive
(تنها در حالت‌های c و r) بایگانی مشخص‌شده باز می‌شود و ورودی‌های درون آن به بایگانی فعلی اضافه خواهند شد. به عنوان یک مثال ساده،
tar -c -f - newfile @original.tar

یک بایگانی جدید در خروجی استاندارد می‌نویسد، شامل پرونده newfile و تمام ورودی‌های موجود در original.tar. در مقابل،

tar -c -f - newfile original.tar

یک بایگانی جدید تنها با دو ورودی ایجاد می‌کند. به همین ترتیب،

tar -czf - --format pax @-

یک بایگانی را از ورودی استاندارد (که قالب آن به‌طور خودکار تعیین خواهد شد) می‌خواند و آن را به یک بایگانی با قالب pax و فشرده‌سازی gzip در خروجی استاندارد تبدیل می‌کند. به این ترتیب، tar می‌تواند برای تبدیل بایگانی‌ها از یک قالب به قالبی دیگر استفاده شود.

, --auto-compress
(تنها در حالت c) از پسوند بایگانی برای تعیین مجموعه قالب و فشرده‌سازی‌ها استفاده می‌کند. به‌عنوان یک مثال ساده،
tar -a -cf archive.tgz source.c source.h

یک بایگانی جدید با قالب محدودشده pax و فشرده‌سازی gzip ایجاد می‌کند،

tar -a -cf archive.tar.bz2.uu source.c source.h

یک بایگانی جدید با قالب محدودشده pax و فشرده‌سازی bzip2 و فشرده‌سازی uuencode ایجاد می‌کند،

tar -a -cf archive.zip source.c source.h

یک بایگانی جدید با قالب zip ایجاد می‌کند،

tar -a -jcf archive.tgz source.c source.h

گزینه “-j” را نادیده می‌گیرد و یک بایگانی جدید با قالب محدودشده pax و فشرده‌سازی gzip ایجاد می‌کند،

tar -a -jcf archive.xxx source.c source.h

اگر پسوند ناشناخته باشد یا پسوندی وجود نداشته باشد، یک بایگانی جدید با قالب محدودشده pax و فشرده‌سازی bzip2 ایجاد می‌کند.

(تنها در حالت‌های c، r، u و x) بایگانی یا استخراج ACLهای POSIX.1e یا NFSv4. این برعکس --no-acls و رفتار پیش‌فرض در حالت‌های c، r و u (به‌جز در Mac OS X) است، یا اگر tar در حالت x به‌صورت root اجرا شود. در Mac OS X این گزینه ACLهای گسترش‌یافته را به ACLهای NFSv4 تبدیل می‌کند. برای ذخیره ACLهای گسترش‌یافته، گزینه --mac-metadata ترجیح داده می‌شود.
, --read-full-blocks
به‌منظور سازگاری با سایر پیاده‌سازی‌های tar(1) نادیده گرفته می‌شود.
blocksize, --block-size blocksize
اندازه بلوک را بر حسب رکوردهای 512 بایتی، برای ورودی/خروجی درایو نوار مشخص می‌کند. به‌عنوان یک قاعده کلی، این آرگومان تنها هنگام خواندن از یا نوشتن در درایوهای نوار مورد نیاز است و معمولاً حتی در آن حالت نیز نیازی نیست، زیرا اندازه بلوک پیش‌فرض 20 رکورد (10240 بایت) بسیار متداول است.
directory, --cd directory, --directory directory
در حالت‌های c و r، این گزینه پوشه را پیش از افزودن پرونده‌های بعدی تغییر می‌دهد. در حالت x، پس از باز کردن بایگانی اما پیش از استخراج ورودی‌ها از بایگانی، پوشه را تغییر می‌دهد.
(تنها در حالت x) () به پوشهٔ جاری پس از پردازش هرگونه گزینهٔ -C و پیش از استخراج هر پرونده‌ای.
(استفاده همراه با --mtime) زمان تغییر تنها در صورتی تنظیم می‌شود که پرونده جدیدتر باشد از تاریخ مشخص‌شده در --mtime.
(تنها در حالت x) پیش از حذف اشیای سامانهٔ پرونده به منظور جایگزینی آن‌ها، صفت‌های پرونده یا پرچم‌های پروندهٔ ویژهٔ سکو را که ممکن است مانع از حذف شوند، پاک می‌کند.
pattern
پرونده‌ها یا پوشه‌هایی را که با الگوی مشخص‌شده مطابقت دارند، پردازش نمی‌کند. توجه داشته باشید که استثناها بر الگوها یا نام‌های پروندهٔ مشخص‌شده در خط فرمان اولویت دارند.
پرونده‌ها یا پوشه‌هایی را که به‌طور داخلی توسط این سامانه‌های کنترل نسخه استفاده می‌شوند، پردازش نمی‌کند: ‘Arch’, ‘Bazaar’, ‘CVS’, ‘Darcs’, ‘Mercurial’, ‘RCS’, ‘SCCS’, ‘SVN’ و ‘git’.
(تنها در حالت‌های c، r، u و x) صفت‌های پرونده یا پرچم‌های پروندهٔ ویژهٔ سکو را بایگانی یا استخراج می‌کند. این رفتار برعکس --no-fflags بوده و رفتار پیش‌فرض در حالت‌های c، r و u است، یا اگر tar در حالت x با دسترسی root اجرا شود.
format
(تنها در حالت‌های c، r و u) از قالب مشخص‌شده برای بایگانی ایجادشده استفاده می‌کند. قالب‌های پشتیبانی‌شده عبارتند از: “cpio”, “pax”, “shar”, و “ustar”. سایر قالب‌ها نیز ممکن است پشتیبانی شوند؛ برای کسب اطلاعات بیشتر دربارهٔ قالب‌های پشتیبانی‌شدهٔ کنونی به libarchive-formats(5) مراجعه کنید. در حالت‌های r و u، هنگام گسترش یک بایگانی موجود، قالب مشخص‌شده در اینجا باید با قالب بایگانی موجود روی دیسک سازگار باشد.
file, --file file
خواندن بایگانی از پروندهٔ مشخص‌شده یا نوشتن در آن. نام پرونده برای ورودی استاندارد یا خروجی استاندارد می‌تواند - باشد. مقدار پیش‌فرض بسته به سیستم متفاوت است؛ در FreeBSD ، پیش‌فرض /dev/sa0 است؛ در لینوکس، پیش‌فرض /dev/st0 است.
id
استفاده از شماره شناسهٔ گروه ارائه‌شده. هنگام استخراج، این گزینه جایگزین شناسهٔ گروه در بایگانی می‌شود؛ نام گروه در بایگانی نادیده گرفته خواهد شد. هنگام ایجاد، این گزینه جایگزین شناسهٔ گروه خوانده‌شده از دیسک می‌شود؛ اگر --gname نیز مشخص نشده باشد، نام گروه مطابق با شناسهٔ گروه تنظیم خواهد شد.
name
استفاده از نام گروه ارائه‌شده. هنگام استخراج، این گزینه جایگزین نام گروه در بایگانی می‌شود؛ اگر نام گروه ارائه‌شده در سیستم وجود نداشته باشد، شناسهٔ گروه (از بایگانی یا از گزینهٔ --gid) به‌جای آن استفاده خواهد شد. هنگام ایجاد، این گزینه نام گروهی را که در بایگانی ذخیره خواهد شد تنظیم می‌کند؛ این نام در برابر پایگاه‌دادهٔ گروه‌های سیستم اعتبارسنجی نخواهد شد.
name[:gid]
استفاده از گروه ارائه‌شده؛ اگر gid ارائه نشده باشد، name می‌تواند نام گروه یا شناسهٔ عددی باشد. برای جزئیات، گزینهٔ --gname را ببینید.
(فقط در حالت‌های c و r) پیوندهای نمادین ذکرشده در خط فرمان دنبال خواهند شد؛ هدف پیوند بایگانی خواهد شد، نه خود پیوند.
(فقط در حالت‌های c و r) مترادفی برای -L.
مترادفی برای -T.
نمایش راهنمای استفاده.
(فقط در حالت x) ویژهٔ Mac OS X (نسخهٔ 10.6 یا بالاتر). پرونده‌های عادی استخراج‌شده را با فشرده‌سازی HFS+ فشرده می‌کند.
نام مستعاری برای --options read_concatenated_archives جهت سازگاری با GNU tar.
pattern
تنها پرونده‌ها یا پوشه‌هایی را پردازش می‌کند که با الگوی مشخص‌شده مطابقت دارند. توجه داشته باشید که استثناهای مشخص‌شده با --exclude بر موارد گنجانده‌شده اولویت دارند. اگر هیچ موردی برای گنجاندن به‌طور صریح مشخص نشده باشد، همه ورودی‌ها به‌طور پیش‌فرض پردازش می‌شوند. گزینهٔ --include به‌ویژه هنگام فیلتر کردن بایگانی‌ها مفید است. برای مثال، دستور
tar -c -f new.tar --include='*foo*' @old.tgz

یک بایگانی جدید new.tar ایجاد می‌کند که تنها شامل ورودی‌هایی از old.tgz است، حاوی رشتهٔ ‘foo’.

, --xz
(تنها در حالت c) فشرده‌سازی بایگانی حاصل با xz(1). در حالت‌های استخراج یا فهرست، این گزینه نادیده گرفته می‌شود. توجه داشته باشید که این پیاده‌سازی tar فشرده‌سازی XZ را هنگام خواندن بایگانی‌ها به‌طور خودکار تشخیص می‌دهد.
, --bzip, --bzip2, --bunzip2
(تنها در حالت c) فشرده‌سازی بایگانی حاصل با bzip2(1). در حالت‌های استخراج یا فهرست، این گزینه نادیده گرفته می‌شود. توجه داشته باشید که این پیاده‌سازی tar فشرده‌سازی bzip2 را هنگام خواندن بایگانی‌ها به‌طور خودکار تشخیص می‌دهد.
, --keep-old-files
(تنها در حالت x) پرونده‌های موجود را بازنویسی نمی‌کند. به‌ویژه، اگر یک پرونده بیش از یک بار در یک بایگانی ظاهر شود، نسخه‌های بعدی بر روی نسخه‌های قبلی بازنویسی نخواهند شد.
(تنها در حالت x) پرونده‌های موجودی را که جدیدتر از نسخه‌های موجود در بایگانی در حال استخراج هستند، بازنویسی نمی‌کند.
, --dereference
(تنها در حالت‌های c و r) همه پیوندهای نمادین دنبال خواهند شد. به‌طور معمول، پیوندهای نمادین همان‌گونه که هستند بایگانی می‌شوند. با این گزینه، در عوض مقصد پیوند بایگانی خواهد شد.
, --check-links
(تنها در حالت‌های c و r) یک پیام هشدار صادر می‌کند مگر اینکه همه پیوندها به هر پرونده بایگانی شده باشند.
(تنها در حالت c) فشرده‌سازی بایگانی حاصل با lrzip(1). در حالت‌های استخراج یا فهرست، این گزینه نادیده گرفته می‌شود. توجه داشته باشید که این پیاده‌سازی tar فشرده‌سازی lrzip را هنگام خواندن بایگانی‌ها به‌طور خودکار تشخیص می‌دهد.
(تنها در حالت c) بایگانی را پیش از نوشتن، با فشرده‌سازی سازگار با lz4 فشرده می‌کند. در حالت‌های استخراج یا فهرست‌گیری، این گزینه نادیده گرفته می‌شود. توجه داشته باشید که این پیاده‌سازی از tar فشرده‌سازی lz4 را هنگام خواندن بایگانی‌ها به صورت خودکار تشخیص می‌دهد.
(تنها در حالت c) بایگانی را پیش از نوشتن، با فشرده‌سازی سازگار با zstd فشرده می‌کند. در حالت‌های استخراج یا فهرست‌گیری، این گزینه نادیده گرفته می‌شود. توجه داشته باشید که این پیاده‌سازی از tar فشرده‌سازی zstd را هنگام خواندن بایگانی‌ها به صورت خودکار تشخیص می‌دهد.
(تنها در حالت c) بایگانی حاصل را با الگوریتم اصلی LZMA فشرده می‌کند. در حالت‌های استخراج یا فهرست‌گیری، این گزینه نادیده گرفته می‌شود. استفاده از این گزینه توصیه نمی‌شود و بایگانی‌های جدید باید در عوض با --xz ایجاد شوند. توجه داشته باشید که این پیاده‌سازی از tar فشرده‌سازی LZMA را هنگام خواندن بایگانی‌ها به صورت خودکار تشخیص می‌دهد.
(تنها در حالت c) بایگانی حاصل را با lzop(1) فشرده می‌کند. در حالت‌های استخراج یا فهرست‌گیری، این گزینه نادیده گرفته می‌شود. توجه داشته باشید که این پیاده‌سازی از tar فشرده‌سازی LZO را هنگام خواندن بایگانی‌ها به صورت خودکار تشخیص می‌دهد.
, --modification-time
(تنها در حالت x) زمان ویرایش را استخراج نمی‌کند. به صورت پیش‌فرض، زمان ویرایش روی زمان ذخیره‌شده در بایگانی تنظیم می‌شود.
(تنها در حالت‌های c، r، u و x) ویژهٔ Mac OS X. بایگانی یا استخراج ACLهای گسترش‌یافته و ویژگی‌های گسترش‌یافتهٔ پرونده با استفاده از copyfile(3) در قالب AppleDouble. این رفتار معکوس --no-mac-metadata. و رفتار پیش‌فرض در حالت‌های c، r و u است، یا اگر tar در حالت x توسط کاربر root اجرا شود. در حال حاضر تنها برای قالب‌های pax پشتیبانی می‌شود (شامل pax restricted، قالب پیش‌فرض tar برای bsdtar)
date
(تنها در حالت‌های c، r و u) زمان ویرایش پرونده‌های اضافه‌شده را روی تاریخ مشخص‌شده تنظیم می‌کند.
, --norecurse, --no-recursion
به صورت بازگشتی روی محتوای پوشه‌ها عمل نمی‌کند.
date
(تنها در حالت‌های c، r و u) تنها پرونده‌ها و پوشه‌های جدیدتر از تاریخ مشخص‌شده را شامل می‌شود. این گزینه مدخل‌های ctime را مقایسه می‌کند.
date
(تنها در حالت‌های c، r و u) مانند --newer, با این تفاوت که به جای مدخل‌های ctime، مدخل‌های mtime را مقایسه می‌کند.
file
(تنها در حالت‌های c، r و u) تنها پرونده‌ها و پوشه‌هایی را شامل می‌شود که از پروندهٔ مشخص‌شده جدیدتر باشند. این گزینه ورودی‌های ctime را مقایسه می‌کند.
file
(تنها در حالت‌های c، r و u) مشابه --newer-than, با این تفاوت که به جای ورودی‌های ctime، ورودی‌های mtime را مقایسه می‌کند.
(تنها در حالت‌های c و r) با صرف‌نظر کردن از این پرونده، پرچم پروندهٔ nodump را رعایت می‌کند.
(تنها در حالت x) مخصوص Mac OS X (نسخهٔ v10.6 یا جدیدتر). پرونده‌های عادی استخراج‌شده‌ای را که پیش از بایگانی با فشرده‌سازی HFS+ فشرده شده بودند، فشرده نمی‌کند. به‌صورت پیش‌فرض، پرونده‌های عادی مجدداً با فشرده‌سازی HFS+ فشرده می‌شوند.
(استفاده همراه با -I یا -T) نام‌های پرونده یا الگوها به جای خط‌های جدید، با نویسه‌های null از یکدیگر جدا می‌شوند. این ویژگی اغلب برای خواندن نام‌های پرونده استفاده می‌شود؛ نظیر خروجی گزینهٔ -print0 در find(1).
(تنها در حالت‌های c، r، u و x) ACLهای POSIX.1e یا NFSv4 را بایگانی یا استخراج نمی‌کند. این گزینه معکوسِ --acls است و رفتار پیش‌فرض خواهد بود اگر tar توسط کاربر غیر root در حالت x اجرا شود (در Mac OS X برای هر کاربری در حالت‌های c، r، u و x).
(تنها در حالت‌های c، r، u و x) ویژگی‌های پرونده یا پرچم‌های پرونده را بایگانی یا استخراج نمی‌کند. این گزینه معکوسِ --fflags است و رفتار پیش‌فرض خواهد بود اگر tar توسط کاربر غیر root در حالت x اجرا شود.
(تنها در حالت‌های c، r، u و x) مخصوص Mac OS X. ACLها و ویژگی‌های گسترش‌یافتهٔ پرونده را با استفاده از copyfile(3) در قالب AppleDouble بایگانی یا استخراج نمی‌کند. این گزینه معکوسِ --mac-metadata. است و رفتار پیش‌فرض خواهد بود اگر tar توسط کاربر غیر root در حالت x اجرا شود.
(تنها در حالت‌های c، r و u) اطلاعات پرونده‌های پراکنده (sparse) را از دیسک نمی‌خواند. این گزینه رفتاری معکوس دارد در مقایسه با --read-sparse.
(فقط در حالت x) پرونده‌های موقت ایجاد نکند و از rename(2) برای جایگزینی پرونده‌های اصلی استفاده نکند. این برعکسِ --safe-writes است.
(فقط در حالت x) شناسه‌های مالک و گروه را استخراج نکند. این برعکسِ --same-owner و رفتار پیش‌فرض است اگر tar به‌عنوان کاربری غیر از root اجرا شود.
(فقط در حالت x) مجوزهای کامل (SGID، SUID، بیت چسبنده (sticky bit)، ویژگی‌های پرونده یا پرچم‌های پرونده، ویژگی‌های گسترش‌یافتهٔ پرونده و ACLها) را استخراج نکند. این برعکسِ -p و رفتار پیش‌فرض است اگر tar به‌عنوان کاربری غیر از root اجرا شود.
(فقط در حالت‌های c، r، u و x) ویژگی‌های گسترش‌یافتهٔ پرونده را بایگانی یا استخراج نکند. این برعکسِ --xattrs و رفتار پیش‌فرض است اگر tar به‌عنوان کاربری غیر از root در حالت x اجرا شود.
این معادل است با --uname "" --gname "". در هنگام استخراج، باعث می‌شود نام‌های کاربر و گروه در بایگانی به نفع شناسه‌های عددی کاربر و گروه نادیده گرفته شوند. در هنگام ایجاد، باعث می‌شود نام‌های کاربر و گروه در بایگانی ذخیره نشوند.
, --to-stdout
(فقط در حالت‌های x و t) در حالت استخراج (-x)، پرونده‌ها به جای استخراج روی دیسک، در خروجی استاندارد نوشته خواهند شد. در حالت فهرست (-t)، فهرست پرونده‌ها به جای خروجی استانداردِ معمول، در stderr نوشته خواهد شد.
(حالت x) به جای کاربر و گروه مشخص‌شده در بایگانی، از کاربر و گروه کاربری که برنامه را اجرا می‌کند استفاده شود. توجه داشته باشید که این گزینه هیچ تأثیری ندارد مگر اینکه -p مشخص شده باشد و برنامه توسط کاربر root اجرا شود. در این حالت، حالت‌ها و پرچم‌های پرونده از بایگانی بازیابی خواهند شد، اما ACLها یا اطلاعات مالک در بایگانی نادیده گرفته می‌شوند.
(حالت‌های c، r و u) مترادفی برای --format ustar
date
(فقط در حالت‌های c، r و u) تنها پرونده‌ها و دایرکتوری‌های قدیمی‌تر از تاریخ مشخص‌شده را شامل می‌شود. این گزینه ورودی‌های ctime را مقایسه می‌کند.
date
(فقط در حالت‌های c، r و u) مشابه --older, با این تفاوت که به‌جای ورودی‌های ctime، ورودی‌های mtime را مقایسه می‌کند.
file
(فقط در حالت‌های c، r و u) تنها پرونده‌ها و دایرکتوری‌های قدیمی‌تر از پرونده مشخص‌شده را شامل می‌شود. این گزینه ورودی‌های ctime را مقایسه می‌کند.
file
(فقط در حالت‌های c، r و u) مشابه --older-than, با این تفاوت که به‌جای ورودی‌های ctime، ورودی‌های mtime را مقایسه می‌کند.
(حالت‌های c، r و u) از نقاط اتصال عبور نمی‌کند.
options
انتخاب رفتارهای اختیاری برای ماژول‌های خاص. آرگومان یک رشته متنی شامل کلیدواژه‌ها و مقادیر جداشده با کاما است. این موارد به ماژول‌هایی که قالب‌های خاص را مدیریت می‌کنند منتقل می‌شوند تا نحوه رفتار آن قالب‌ها را کنترل کنند. هر گزینه یکی از شکل‌های زیر را دارد:
key=value
کلید در تمام ماژول‌هایی که از آن پشتیبانی می‌کنند روی مقدار مشخص‌شده تنظیم خواهد شد. ماژول‌هایی که از این کلید پشتیبانی نمی‌کنند، آن را نادیده می‌گیرند.
key
کلید در تمام ماژول‌هایی که از آن پشتیبانی می‌کنند فعال خواهد شد. این معادل است با key=1.
!key
کلید در تمام ماژول‌هایی که از آن پشتیبانی می‌کنند غیرفعال خواهد شد.
module:key=value, module:key, module:!key
مانند بالا، اما کلید و مقدار متناظر تنها در اختیار ماژول‌هایی قرار می‌گیرد که نام آن‌ها مطابقت دارد با module.

فهرست کامل ماژول‌ها و کلیدهای پشتیبانی‌شده برای حالت‌های ایجاد و الحاق موجود است در archive_write_set_options(3) و برای حالت‌های استخراج و فهرست‌گیری در archive_read_set_options(3).

نمونه‌هایی از گزینه‌های پشتیبانی‌شده:

پشتیبانی از افزونه‌های Joliet. این گزینه به‌صورت پیشفرض فعال است، از !joliet یا iso9660:!joliet برای غیرفعال کردن استفاده کنید.
پشتیبانی از پسوندهای Rock Ridge. این ویژگی به طور پیش‌فرض فعال است، برای غیرفعال کردن از !rockridge یا iso9660:!rockridge استفاده کنید.
یک عدد صحیح ده‌دهی از 1 تا 9 که سطح فشرده‌سازی gzip را مشخص می‌کند.
ذخیره برچسب زمان. این ویژگی به طور پیش‌فرض فعال است، برای غیرفعال کردن از !timestamp یا gzip:!timestamp استفاده کنید.
=type
استفاده از type به عنوان روش فشرده‌سازی. مقادیر پشتیبانی‌شده عبارتند از bzip2، gzip، lzo (بسیار سریع)، و zpaq (بهترین، بسیار کند).
یک عدد صحیح ده‌دهی از 1 تا 9 که سطح فشرده‌سازی lrzip را مشخص می‌کند.
یک عدد صحیح ده‌دهی از 1 تا 9 که سطح فشرده‌سازی lzop را مشخص می‌کند.
فعال‌سازی مجموع مقابله‌ای جریان. این گزینه به طور پیش‌فرض فعال است، برای غیرفعال کردن از lz4:!stream-checksum استفاده کنید.
فعال‌سازی مجموع مقابله‌ای بلوک (به طور پیش‌فرض غیرفعال است).
یک عدد صحیح ده‌دهی از 4 تا 7 که اندازه بلوک فشرده‌سازی lz4 را مشخص می‌کند (به طور پیش‌فرض روی 7 تنظیم شده است).
استفاده از بلوک پیشینِ بلوک در حال فشرده‌سازی به عنوان واژه‌نامه فشرده‌سازی جهت بهبود نسبت فشرده‌سازی.
=N
یک عدد صحیح ده‌دهی که سطح فشرده‌سازی zstd را مشخص می‌کند. مقادیر پشتیبانی‌شده به نسخه کتابخانه بستگی دارند، مقادیر متداول از 1 تا 22 هستند.
=N
مشخص کردن تعداد ریسه‌های کاری مورد استفاده، یا 0 برای استفاده از همان تعداد ریسه به اندازه هسته‌های CPU موجود در سیستم.
شروع یک فریم فشرده‌سازی جدید در ابتدای هر پرونده در بایگانی.
=N
در ترکیب با zstd:frame-per-file, فریم فشرده‌سازی جدیدی آغاز نمی‌شود مگر اینکه اندازه فشرده‌نشده فریم فعلی حداقل N بایت باشد. می‌توان پس از عدد از k / kB, M / MB, یا G / GB برای نشان دادن به ترتیب کیلوبایت، مگابایت یا گیگابایت استفاده کرد.
=N, zstd:min-frame-size=N
در ترکیب با zstd:frame-per-file, فریم فشرده‌سازی جدیدی را آغاز نمی‌کند مگر اینکه اندازه فشرده‌شدهٔ فریم فعلی حداقل N بایت باشد. این عدد می‌تواند با k / kB, M / MB, یا G / GB دنبال شود تا به ترتیب نشان‌دهنده کیلوبایت، مگابایت یا گیگابایت باشد.
=N, zstd:max-frame-size=N
در سریع‌ترین زمان ممکن پس از اینکه اندازه فشرده‌نشدهٔ فریم فعلی از N بایت بیشتر شد، فریم فشرده‌سازی جدیدی را آغاز می‌کند. این عدد می‌تواند با k / kB, M / MB, یا G / GB دنبال شود تا به ترتیب نشان‌دهنده کیلوبایت، مگابایت یا گیگابایت باشد. مقادیر کمتر از 1,024 رد خواهند شد.
=N
در سریع‌ترین زمان ممکن پس از اینکه اندازه فشرده‌شدهٔ فریم فعلی از N بایت بیشتر شد، فریم فشرده‌سازی جدیدی را آغاز می‌کند. این عدد می‌تواند با k / kB, M / MB, یا G / GB دنبال شود تا به ترتیب نشان‌دهنده کیلوبایت، مگابایت یا گیگابایت باشد. مقادیر کمتر از 1,024 رد خواهند شد.
یک عدد صحیح ده‌دهی از 1 تا 9 که سطح فشرده‌سازی lzop را مشخص می‌کند.
یک عدد صحیح ده‌دهی از 0 تا 9 که سطح فشرده‌سازی xz را مشخص می‌کند.
تعداد ریسه‌های کاری مورد استفاده را مشخص می‌کند. تنظیم threads روی مقدار ویژه 0 باعث می‌شود xz(1) به تعداد هسته‌های CPU موجود در سیستم از ریسه استفاده کند.
keyword
ماژول نویسنده mtree به شما امکان می‌دهد مشخص کنید کدام کلیدواژه‌های mtree در خروجی گنجانده شوند. کلیدواژه‌های پشتیبانی‌شده عبارتند از: cksum, device, flags, gid, gname, indent, link, md5, mode, nlink, rmd160, sha1, sha256, sha384, sha512, size, time, uid, uname. پیشفرض معادل است با: “device, flags, gid, gname, link, mode, nlink, size, time, type, uid, uname”.
تمام کلیدواژه‌های بالا را فعال می‌کند. همچنین می‌توانید از mtree:!all برای غیرفعال کردن تمام کلیدواژه‌ها استفاده کنید.
فعال‌سازی تولید خطوط /set در خروجی.
تولید خروجی خوانا برای انسان با ایجاد تورفتگی در گزینه‌ها و شکستن خطوط جهت جا شدن در 80 ستون.
=type
استفاده از type به‌عنوان روش فشرده‌سازی. مقادیر پشتیبانی‌شده عبارتند از store (فشرده‌نشده) و deflate (الگوریتم gzip).
فعال‌سازی رمزنگاری با استفاده از رمزنگاری سنتی zip.
=type
استفاده از type به‌عنوان نوع رمزنگاری. مقادیر پشتیبانی‌شده عبارتند از zipcrypt (رمزنگاری سنتی zip)، aes128 (رمزنگاری WinZip AES-128) و aes256 (رمزنگاری WinZip AES-256).
نادیده گرفتن بلوک‌های صفرشده در بایگانی، که هنگام متصل کردن چندین بایگانی tar به یکدیگر رخ می‌دهد. بدون این گزینه، تنها محتویات نخستین بایگانی متصل‌شده خوانده خواهد شد. این گزینه مشابه گزینهٔ -i, --ignore-zeros در GNU tar است.

اگر گزینهٔ ارائه‌شده توسط هیچ ماژولی پشتیبانی نشود، یک خطای مهلک خواهد بود.

, --absolute-paths
حفظ نام مسیرها. به‌طور پیش‌فرض، در نام مسیرهای مطلق (مسیرهایی که با نویسهٔ / آغاز می‌شوند)، اسلش ابتدایی هم هنگام ایجاد بایگانی‌ها و هم هنگام استخراج از آن‌ها حذف می‌شود. همچنین، tar از استخراج ورودی‌های بایگانی که نام مسیر آن‌ها حاوی .. است یا دایرکتوری مقصد آن‌ها توسط یک پیوند نمادین تغییر می‌یابد، خودداری خواهد کرد. این گزینه مانع از بروز این رفتارها می‌شود.
, --insecure, --preserve-permissions
(فقط در حالت x) حفظ دسترسی‌های پرونده. تلاش برای بازیابی دسترسی‌های کامل، شامل حالت‌های پرونده، ویژگی‌های پرونده یا پرچم‌های پرونده، ویژگی‌های گسترش‌یافتهٔ پرونده و ACLها، در صورت وجود، برای هر مورد استخراج‌شده از بایگانی. این معکوسِ --no-same-permissions است و در صورتی که tar به‌عنوان root اجرا شود، حالت پیش‌فرض است. همچنین می‌توان با مشخص کردن موارد زیر آن را تا حدی لغو کرد: --no-acls, --no-fflags, --no-mac-metadata یا --no-xattrs.
passphrase
از passphrase برای استخراج یا ایجاد یک بایگانی رمزگذاری‌شده استفاده می‌شود. در حال حاضر، zip تنها قالب پشتیبانی‌شده‌ای است که از رمزگذاری پشتیبانی می‌کند. نباید از این گزینه استفاده کنید مگر اینکه بدانید استفاده از این گزینه تا چه حد ناامن است.
(فقط در حالت‌های c، r و u) مترادفی برای --format pax
, --fast-read
(فقط در حالت‌های x و t) تنها اولین مدخل بایگانی را که با هر الگو یا عملوند نام پرونده مطابقت دارد، استخراج یا فهرست می‌کند. به محض اینکه هر الگو یا نام پرونده مشخص‌شده مطابقت یافت، خارج می‌شود. به‌طور پیش‌فرض، بایگانی همیشه تا انتها خوانده می‌شود، چرا که ممکن است چندین مدخل با نام یکسان وجود داشته باشد و طبق قرارداد، مدخل‌های بعدی مدخل‌های قبلی را بازنویسی می‌کنند. این گزینه برای بهینه‌سازی کارایی ارائه شده است.
(فقط در حالت‌های c، r و u) اطلاعات پرونده‌های پراکنده را از دیسک می‌خواند. این معکوسِ --no-read-sparse و رفتار پیش‌فرض است.
(فقط در حالت x) پرونده‌ها را به عنوان پرونده‌های پراکنده استخراج می‌کند. برای هر بلوک روی دیسک، ابتدا بررسی می‌کند که آیا فقط شامل بایت‌های NULL است و در غیر این صورت از روی آن عبور می‌کند (seek انجام می‌دهد). این عملکرد مشابه گزینه conv=sparse در dd است.
pattern
نام پرونده یا اعضای بایگانی را مطابق با pattern تغییر می‌دهد. الگو دارای قالب /old/new/[bghHprRsS] است که در آن old یک عبارت باقاعده پایه، new رشته جایگزین بخش مطابقت‌یافته، و حروف اختیاری انتهایی اصلاح‌کننده نحوه انجام جایگزینی هستند. اگر old مطابقت نیابد، الگو نادیده گرفته می‌شود. درون new, ~ با بخش مطابقت‌یافته، و \1 تا \9 با محتوای گروه ثبت‌شده متناظر جایگزین می‌شود. حرف اختیاری انتهایی g مشخص می‌کند که تطبیق باید پس از بخش مطابقت‌یافته ادامه یابد و با اولین الگوی تطبیق‌نیافته متوقف شود. حرف اختیاری انتهایی s مشخص می‌کند که الگو برای مقدار پیوندهای نمادین اعمال می‌شود. حرف اختیاری انتهایی p مشخص می‌کند که پس از یک جایگزینی موفق، نام مسیر اصلی و نام مسیر جدید باید در خطای استاندارد چاپ شوند. حرف اختیاری انتهایی b مشخص می‌کند که جایگزینی باید از ابتدای رشته تطبیق داده شود، نه دقیقاً پس از موقعیتی که جایگزینی منطبق قبلی به پایان رسیده است. نویسه‌های اختیاری انتهایی H، R یا S به‌ترتیب جایگزینی‌ها را برای هدف‌های پیوند سخت، نام پرونده‌های عادی یا هدف‌های پیوند نمادین غیرفعال می‌کنند. نویسه‌های اختیاری انتهایی h، r یا s به‌ترتیب جایگزینی‌ها را برای هدف‌های پیوند سخت، نام پرونده‌های عادی یا هدف‌های پیوند نمادین فعال می‌کنند. حالت پیش‌فرض hrs است که جایگزینی‌ها را برای همه نام‌ها اعمال می‌کند. به‌ویژه، مشخص کردن h، r یا s هرگز ضروری نیست.
(فقط در حالت x) استخراج پرونده‌ها به‌صورت اتمیک. به‌طور پیش‌فرض tar پروندهٔ اصلی هم‌نام با پروندهٔ استخراج‌شده را (در صورت وجود) پیوندزدایی (unlink) می‌کند، و سپس بلافاصله آن را با همان نام ایجاد کرده و در آن می‌نویسد. برای مدت زمان کوتاهی، برنامه‌هایی که تلاش می‌کنند به پرونده دسترسی پیدا کنند ممکن است آن را پیدا نکنند، یا نتایج ناقصی مشاهده کنند. اگر --safe-writes فعال باشد، tar ابتدا یک پروندهٔ موقت یکتا ایجاد می‌کند، سپس محتویات جدید را در پروندهٔ موقت می‌نویسد، و در نهایت با استفاده از rename(2) نام پروندهٔ موقت را به‌صورت اتمیک به نام نهایی آن تغییر می‌دهد. این کار تضمین می‌کند برنامه‌ای که به پرونده دسترسی پیدا می‌کند، در همه حال یا محتویات قدیمی را مشاهده کند یا محتویات جدید را.
(فقط در حالت x) استخراج شناسه‌های مالک و گروه. این برعکس --no-same-owner است و اگر tar به‌عنوان root اجرا شود، رفتار پیش‌فرض است.
count
حذف تعداد مشخص‌شده از مؤلفه‌های ابتدایی مسیر. نام‌های مسیر با مؤلفه‌های کمتر، بدون هشدار نادیده گرفته می‌شوند. توجه داشته باشید که نام مسیر پس از بررسی الگوهای شمول/عدم‌شمول، اما پیش از بررسی‌های امنیتی ویرایش می‌شود.
filename, --files-from filename
در حالت x یا t، tar فهرست نام‌های مورد نظر برای استخراج را از filename می‌خواند. در حالت c، tar نام‌های مورد نظر برای بایگانی را از filename می‌خواند. نام ویژهٔ “-C” به‌تنهایی در یک سطر، باعث تغییر دایرکتوری جاری به دایرکتوری مشخص‌شده در سطر بعدی خواهد شد. نام‌ها با خط جدید خاتمه می‌یابند مگر اینکه --null مشخص شده باشد. توجه داشته باشید که --null همچنین رفتار ویژهٔ سطرهای حاوی “-C” را غیرفعال می‌کند. نکته: اگر در حال ایجاد فهرست پرونده‌ها با استفاده از find(1) هستید، احتمالاً مایل خواهید بود از -n نیز استفاده کنید.
(فقط در حالت‌های c، r و u) پس از بایگانی کردن همهٔ پرونده‌ها، خلاصه‌ای را در stderr چاپ می‌کند.
, --unlink, --unlink-first
(تنها در حالت x) پیش از ایجاد پرونده‌ها، پیوند آن‌ها را حذف (unlink) می‌کند. اگر بیشتر پرونده‌ها از قبل وجود داشته باشند، این می‌تواند یک بهینه‌سازی جزئی در عملکرد باشد، اما اگر بیشتر پرونده‌ها از قبل وجود نداشته باشند، می‌تواند کار را کندتر کند. این پرچم همچنین باعث می‌شود tar به‌جای گزارش خطا، پیوندهای نمادین دایرکتوری‌های میانی را حذف کند. برای جزئیات بیشتر، بخش SECURITY در زیر را ببینید.
id
از شماره شناسه کاربر ارائه‌شده استفاده کرده و نام کاربر را از بایگانی نادیده می‌گیرد. در هنگام ایجاد، اگر --uname نیز مشخص نشده باشد، نام کاربر به‌گونه‌ای تنظیم می‌شود که با شناسه کاربر مطابقت داشته باشد.
name
از نام کاربر ارائه‌شده استفاده می‌کند. در هنگام استخراج، این گزینه جایگزین نام کاربر در بایگانی می‌شود؛ اگر نام کاربر ارائه‌شده روی سیستم وجود نداشته باشد، نادیده گرفته شده و در عوض از شناسه کاربر (از بایگانی یا از گزینه --uid ) استفاده خواهد شد. در هنگام ایجاد، این گزینه نام کاربری را که در بایگانی ذخیره خواهد شد تنظیم می‌کند؛ این نام در پایگاه‌داده کاربران سیستم اعتبارسنجی نمی‌شود.
program
ورودی (در حالت x یا t) یا خروجی (در حالت c) را به‌جای استفاده از پشتیبانی فشرده‌سازی توکار، از طریق program هدایت (pipe) می‌کند.
name[:uid]
از کاربر ارائه‌شده استفاده می‌کند؛ اگر uid ارائه نشده باشد، name می‌تواند یک نام کاربری یا شناسه عددی باشد. برای جزئیات، گزینه --uname را ببینید.
, --verbose
خروجی با جزئیات کامل (verbose) تولید می‌کند. در حالت‌های ایجاد و استخراج، tar نام هر پرونده را هنگام خواندن از بایگانی یا نوشتن در آن فهرست می‌کند. در حالت فهرست، tar خروجی مشابه دستور ls(1) تولید می‌کند. یک گزینه -v اضافی نیز جزئیاتی شبیه به ls را در حالت ایجاد و استخراج ارائه می‌دهد.
نسخه tar و libarchive را چاپ کرده و خارج می‌شود.
, --confirmation, --interactive
برای هر عملیات درخواست تأیید می‌کند.
filename, --exclude-from filename
فهرستی از الگوهای مستثنی‌سازی را از پروندهٔ مشخص‌شده می‌خواند. برای اطلاعات بیشتر درباره نحوه مدیریت موارد مستثنی، --exclude را ببینید.
(تنها در حالت‌های c، r، u، x) ویژگی‌های گسترش‌یافتهٔ پرونده را بایگانی یا استخراج می‌کند. این گزینه معکوسِ --no-xattrs است و رفتار پیش‌فرض در حالت‌های c، r و u محسوب می‌شود، یا در صورتی که tar در حالت x به عنوان root اجرا شود.
(تنها در حالت c) بایگانی حاصل را با bzip2(1) فشرده می‌کند. در حالت‌های استخراج یا فهرست‌گیری، این گزینه نادیده گرفته می‌شود. توجه داشته باشید که این پیاده‌سازی از tar هنگام خواندن بایگانی‌ها، فشرده‌سازی bzip2 را به صورت خودکار شناسایی می‌کند.
, --compress, --uncompress
(تنها در حالت c) بایگانی حاصل را با compress(1) فشرده می‌کند. در حالت‌های استخراج یا فهرست‌گیری، این گزینه نادیده گرفته می‌شود. توجه داشته باشید که این پیاده‌سازی از tar هنگام خواندن بایگانی‌ها، فشرده‌سازی compress را به صورت خودکار شناسایی می‌کند.
, --gunzip, --gzip
(تنها در حالت c) بایگانی حاصل را با gzip(1) فشرده می‌کند. در حالت‌های استخراج یا فهرست‌گیری، این گزینه نادیده گرفته می‌شود. توجه داشته باشید که این پیاده‌سازی از tar هنگام خواندن بایگانی‌ها، فشرده‌سازی gzip را به صورت خودکار شناسایی می‌کند.

متغیرهای محیطی زیر بر اجرای tar تأثیر می‌گذارند:

گزینه‌های پیش‌فرض برای خواننده‌های قالب و خواننده‌های فشرده‌سازی. گزینهٔ --options این تنظیم را بازنویسی می‌کند.
گزینه‌های پیش‌فرض برای نویسنده‌های قالب و نویسنده‌های فشرده‌سازی. گزینهٔ --options این تنظیم را بازنویسی می‌کند.
تنظیمات محلی (locale) مورد استفاده. برای اطلاعات بیشتر، environ(7) را ببینید.
دستگاه پیشفرض. گزینه -f جایگزین این مورد میشود. لطفاً برای جزئیات بیشتر، توضیحات گزینه -f در بالا را ببینید.
منطقه زمانی مورد استفاده هنگام نمایش تاریخها. برای اطلاعات بیشتر، environ(7) را ببینید.

The tar utility exits 0 on success, and >0 if an error occurs.

دستور زیر یک بایگانی جدید به نام file.tar.gz ایجاد میکند که شامل دو پرونده source.c و source.h است:

tar -czf file.tar.gz source.c source.h

برای مشاهده فهرست تفصیلی محتویات این بایگانی:

tar -tvf file.tar.gz

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

tar -x

برای بررسی محتویات یک تصویر ISO 9660 cdrom:

tar -tf image.iso

برای انتقال سلسله‌مراتب پرونده‌ها، tar را به این صورت اجرا کنید:

tar -cf - -C srcdir . | tar -xpf - -C destdir

یا به شیوه سنتی‌تر:

cd srcdir ; tar -cf - . | (cd destdir ; tar -xpf -
)

در حالت ایجاد، فهرست پرونده‌ها و دایرکتوری‌هایی که باید بایگانی شوند میتواند شامل دستورالعمل‌های تغییر دایرکتوری به شکل -Cfoo/baz و گنجاندن بایگانی به شکل @archive-file نیز باشد. برای مثال، خط فرمان

tar -c -f new.tar foo1 @old.tgz -C/tmp foo2

یک بایگانی جدید به نام new.tar ایجاد خواهد کرد. tar پرونده foo1 را از دایرکتوری جاری خوانده و آن را به بایگانی خروجی اضافه میکند. سپس هر مدخل را از old.tgz خوانده و آن مدخلها را به بایگانی خروجی می‌افزاید. در نهایت، به دایرکتوری /tmp رفته و foo2 را به بایگانی خروجی اضافه میکند.

یک پرونده ورودی در قالب mtree(5) می‌تواند برای ایجاد یک بایگانی خروجی با مالکیت، دسترسی‌ها یا نام‌های دلخواهی که با داده‌های موجود روی دیسک تفاوت دارند، استفاده شود:

$ cat input.mtree
#mtree
usr/bin uid=0 gid=0 mode=0755 type=dir
usr/bin/ls uid=0 gid=0 mode=0755 type=file content=myls
$ tar -cvf output.tar @input.mtree

گزینه‌های --newer و --newer-mtime انواع مختلفی از مشخصات رایج تاریخ و زمان را می‌پذیرند، از جمله “12 Mar 2005 7:14:29pm”, “2005-03-12 19:14”, “5 minutes ago”, و “19:14 PST May 1”.

آرگومان --options می‌تواند برای کنترل جزئیات گوناگون ساخت یا خواندن بایگانی استفاده شود. برای مثال، می‌توانید خروجی mtree تولید کنید که تنها شامل کلیدواژه‌های type, time, و uid باشد:

tar -cf file.tar --format=mtree --options='!all,type,time,uid' dir

یا می‌توانید سطح فشرده‌سازی مورد استفاده در فشرده‌سازی gzip یا xz را تعیین کنید:

tar -czf file.tar --options='compression-level=9'
.

برای جزئیات بیشتر، به توضیحات فراخوانی‌های API () و () که در archive_read(3) و archive_write(3) شرح داده شده‌اند مراجعه کنید.

قالب آرگومان‌های تجمیع‌شده برای سازگاری با پیاده‌سازی‌های پیشین پشتیبانی می‌شود. این قالب شامل یک کلمه ابتدایی (بدون نویسه - در ابتدا) است که در آن هر نویسه نشان‌دهنده یک گزینه است. آرگومان‌ها به صورت کلمات جداگانه در ادامه می‌آیند. ترتیب آرگومان‌ها باید با ترتیب نویسه‌های متناظر در کلمه دستوری تجمیع‌شده مطابقت داشته باشد. برای مثال،

tar tbf 32 file.tar

سه گزینه t, b, و f را مشخص می‌کند. هر دو گزینه b و f به آرگومان نیاز دارند، بنابراین باید دو مورد اضافی در خط فرمان وجود داشته باشد. مقدار 32 آرگومان مربوط به گزینه b است، و file.tar آرگومان مربوط به گزینه f می‌باشد.

گزینه‌های حالت c، r، t، u و x و گزینه‌های b، f، l، m، o، v و w با SUSv2 سازگار هستند.

برای بیشترین قابلیت‌حمل، اسکریپت‌هایی که tar را فراخوانی می‌کنند باید از قالب آرگومان‌های ادغام‌شدهٔ بالا استفاده کنند، و خود را به حالت‌های c, t, و x و گزینه‌های b, f, m, v, و w محدود نمایند.

گزینه‌های طولانی بیشتری برای بهبود سازگاری با سایر پیاده‌سازی‌های tar ارائه شده‌اند.

برخی مسائل امنیتی در میان بسیاری از برنامه‌های بایگانی، از جمله tar مشترک هستند. به‌ویژه، بایگانی‌های دست‌کاری‌شده می‌توانند درخواست کنند که tar پرونده‌ها را در مکان‌هایی بیرون از دایرکتوری مقصد استخراج کند. این موضوع می‌تواند به‌طور بالقوه برای وادار کردن کاربران ناآگاه به بازنویسی پرونده‌هایی که قصد بازنویسی آن‌ها را نداشتند، استفاده شود. اگر بایگانی توسط superuser استخراج شود، هر پرونده‌ای در سیستم می‌تواند به‌طور بالقوه بازنویسی شود. این اتفاق به سه روش می‌تواند رخ دهد. اگرچه tar سازوکارهایی برای محافظت در برابر هر یک از آن‌ها دارد، کاربران آگاه باید از پیامدهای آن مطلع باشند:

  • مدخل‌های بایگانی می‌توانند دارای نام‌مسیرهای مطلق باشند. به‌طور پیش‌فرض، tar برای محافظت در برابر این مشکل، نویسهٔ ابتدایی / را پیش از بازیابی، از نام پرونده‌ها حذف می‌کند.
  • مدخل‌های بایگانی می‌توانند دارای نام‌مسیرهایی شامل مؤلفه‌های .. باشند. به‌طور پیش‌فرض، tar پرونده‌هایی را که در نام‌مسیر خود دارای مؤلفه‌های .. باشند، استخراج نخواهد کرد.
  • مدخل‌های بایگانی می‌توانند از پیوندهای نمادین برای بازیابی پرونده‌ها در دایرکتوری‌های دیگر سوءاستفاده کنند. یک بایگانی می‌تواند یک پیوند نمادین را به دایرکتوری دیگری بازیابی کند، سپس از آن پیوند برای بازیابی یک پرونده در آن دایرکتوری بهره ببرد. برای محافظت در برابر این موضوع، tar هر مسیر استخراج‌شده را از نظر وجود پیوندهای نمادین بررسی می‌کند. اگر آخرین مؤلفهٔ مسیر یک پیوند نمادین باشد، حذف شده و با مدخل بایگانی جایگزین می‌شود. اگر -U مشخص شده باشد، هر پیوند نمادین میانی نیز بدون قید و شرط حذف خواهد شد. اگر نه -U و نه -P مشخص شده باشند، tar از استخراج آن مدخل خودداری خواهد کرد.

برای محافظت از خود، باید نسبت به هر بایگانی که از منابع غیرقابل‌اعتماد می‌آید محتاط باشید. باید محتویات یک بایگانی را با

tar -tf filename

پیش از استخراج بررسی کنید. باید از گزینهٔ -k برای اطمینان از این‌که tar هیچ پروندهٔ موجودی را بازنویسی نخواهد کرد، یا از گزینهٔ -U برای حذف پرونده‌های از پیش موجود استفاده کنید. به‌طور کلی نباید هنگام اجرا با دسترسی‌های کاربر ارشد (super-user)، بایگانی‌ها را استخراج کنید. توجه داشته باشید که گزینهٔ -P در tar بررسی‌های امنیتی بالا را غیرفعال کرده و به شما امکان می‌دهد یک بایگانی را ضمن حفظ هرگونه نام مسیر مطلق، مؤلفه‌های .. یا پیوندهای نمادین به سایر پوشه‌ها استخراج کنید.

bzip2(1), compress(1), cpio(1), gzip(1), mt(1), pax(1), shar(1), xz(1), libarchive(3), libarchive-formats(5), tar(5)

در حال حاضر هیچ استاندارد POSIX برای دستور tar وجود ندارد؛ این دستور در ISO/IEC 9945-1:1996 (“POSIX.1”) ظاهر شد، اما کنار گذاشته شد از IEEE Std 1003.1-2001 (“POSIX.1”). گزینه‌های پشتیبانی‌شده توسط این پیاده‌سازی، با بررسی چندین پیاده‌سازی موجود از tar و همچنین مشخصات قدیمی POSIX برای tar و مشخصات فعلی POSIX برای pax توسعه یافته‌اند.

قالب‌های پروندهٔ تبادل ustar و pax توسط IEEE Std 1003.1-2001 (“POSIX.1”) برای دستور pax تعریف شده‌اند.

دستور tar در Seventh Edition Unix که در ژانویهٔ ۱۹۷۹ منتشر شد، پدیدار گردید. پیاده‌سازی‌های متعدد دیگری نیز وجود داشته‌اند که بسیاری از آن‌ها قالب پرونده را گسترش دادند. پیاده‌سازی مالکیت عمومی جان گیلمور (حدود نوامبر ۱۹۸۷) بسیار تأثیرگذار بود و پایه و اساس GNU tar را تشکیل داد. GNU tar به‌عنوان tar استاندارد سیستم در FreeBSD گنجانده شد، با شروع از FreeBSD 1.0.

این یک بازپیاده‌سازی کامل بر پایه کتابخانه libarchive(3) است. نخستین بار با FreeBSD 5.4 در مه ۲۰۰۵ منتشر شد.

این برنامه برای تعریف گزینه -l از ISO/IEC 9945-1:1996 (“POSIX.1”) پیروی می‌کند. توجه داشته باشید که GNU tar پیش از نسخه 1.15، گزینه -l را به‌عنوان مترادفی برای گزینه --one-file-system در نظر می‌گرفت.

گزینه -C dir ممکن است با پیاده‌سازی‌های تاریخی تفاوت داشته باشد.

تمام خروجی بایگانی در بلوک‌هایی با اندازه مناسب نوشته می‌شود، حتی اگر خروجی در حال فشرده‌سازی باشد. اینکه آیا آخرین بلوک خروجی به اندازه یک بلوک کامل پر (pad) می‌شود یا خیر، بسته به قالب و دستگاه خروجی متفاوت است. برای قالب‌های tar و cpio، در صورتی که خروجی در خروجی استاندارد یا در یک دستگاه نویسه‌ای یا بلوکی مانند درایو نوار نوشته شود، آخرین بلوک خروجی به اندازه یک بلوک کامل پر می‌شود. اگر خروجی در یک پرونده معمولی نوشته شود، آخرین بلوک پر نخواهد شد. بسیاری از فشرده‌سازها، از جمله gzip(1) و bzip2(1), هنگام از حالت فشرده خارج کردن بایگانی ایجادشده توسط tar, از پرکننده‌های تهی (null padding) شکایت می‌کنند، اگرچه همچنان آن را به‌درستی استخراج می‌کنند.

فشرده‌سازی و بازگشایی به‌صورت داخلی پیاده‌سازی شده است، بنابراین ممکن است تفاوت‌های ناچیزی وجود داشته باشد میان خروجی فشرده تولیدشده توسط

tar -czf - file

و خروجی تولیدشده توسط

tar -cf - file | gzip

پیش‌فرض باید خواندن و نوشتن بایگانی‌ها در مسیرهای ورودی/خروجی استاندارد باشد، اما سنت (و POSIX) خلاف این را دیکته می‌کند.

حالت‌های r و u نیازمند آن هستند که بایگانی غیرفشرده بوده و در یک پرونده معمولی روی دیسک قرار داشته باشد. سایر بایگانی‌ها را می‌توان با استفاده از حالت c همراه با پسوند @archive-file تغییر داد.

برای بایگانی کردن پرونده‌ای به نام @foo یا -foo باید آن را به‌ترتیب به‌صورت ./@foo یا ./-foo مشخص کنید.

در حالت ایجاد، یک ./ ابتدایی همیشه حذف می‌شود. یک / ابتدایی نیز حذف می‌شود مگر اینکه گزینه -P مشخص شده باشد.

باید پشتیبانی بهتری برای انتخاب پرونده در هر دو حالت ایجاد و استخراج وجود داشته باشد.

هنوز هیچ پشتیبانی برای بایگانی‌های چندجلدی وجود ندارد.

تبدیل میان قالب‌های بایگانی ناهمسان (مانند tar و cpio) با استفاده از قرارداد @- می‌تواند باعث از بین رفتن اطلاعات پیوند سخت شود. این امر ناشی از روش‌های ناسازگاری است که قالب‌های مختلف بایگانی برای ذخیره‌سازی اطلاعات پیوند سخت به کار می‌برند.

April 23, 2024 Linux 6.12.107+deb13-amd64