| TAR(1) | General Commands Manual | TAR(1) |
نام (NAME)
tar —
دستکاری
و مدیریت
بایگانیهای
پرونده
خلاصه دستور (SYNOPSIS)
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]
توضیحات (DESCRIPTION)
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 یک
نشانگر
حالت از
فهرست زیر
است:
-c- یک بایگانی
جدید حاوی
موارد
مشخصشده
ایجاد
میکند. شکل
طولانی این
گزینه
--createاست. -r- مانند
-cاست، اما ورودیهای جدید به انتهای بایگانی افزوده میشوند. توجه داشته باشید که این ویژگی فقط روی بایگانیهای فشردهنشده ذخیرهشده در پروندههای معمولی کار میکند. گزینهٔ-fالزامی است. شکل طولانی این گزینه--appendاست. -t- فهرست کردن
محتویات
بایگانی در
stdout. فرم
طولانی این
گزینه
عبارت است
از
--list. -u- مانند
-r, اما ورودیهای جدید تنها در صورتی اضافه میشوند که تاریخ تغییر آنها جدیدتر از ورودی متناظر در بایگانی باشد. توجه داشته باشید که این ویژگی فقط روی بایگانیهای فشردهنشده ذخیرهشده در پروندههای معمولی کار میکند. گزینه-fالزامی است. فرم طولانی عبارت است از--update. -x- استخراج از
بایگانی بر
روی دیسک.
اگر
پروندهای
با نام
یکسان بیش
از یک بار
در بایگانی
ظاهر شود،
هر نسخه
استخراج
خواهد شد و
نسخههای
بعدی بر روی
نسخههای
قبلی
بازنویسی
(جایگزین)
میشوند.
فرم طولانی
این گزینه
عبارت است
از
--extract.
در
حالتهای
-c, -r, یا
-u, هر
پرونده یا
دایرکتوری
مشخصشده،
به ترتیبی
که در خط
فرمان
تعیین شده
به بایگانی
اضافه
میشود.
بهطور
پیشفرض،
محتویات هر
دایرکتوری
نیز
بایگانی
میشوند.
در حالت استخراج یا فهرست، کل خط فرمان پیش از باز شدن بایگانی خوانده و تجزیه میشود. نام مسیرها یا الگوهای موجود در خط فرمان مشخص میکنند که کدام موارد در بایگانی باید پردازش شوند. الگوها، الگوهای تطبیق به سبک پوسته (globbing) هستند، همانطور که مستند شده در tcsh(1).
گزینهها (OPTIONS)
مگر اینکه صراحتاً خلاف آن ذکر شده باشد، گزینهها در تمام حالتهای کاری قابل اعمال هستند.
@archive- (تنها در
حالتهای c
و r) بایگانی
مشخصشده
باز میشود
و
ورودیهای
درون آن به
بایگانی
فعلی اضافه
خواهند شد.
به عنوان یک
مثال ساده،
tar-c-f- newfile@original.tarیک بایگانی جدید در خروجی استاندارد مینویسد، شامل پرونده newfile و تمام ورودیهای موجود در original.tar. در مقابل،
tar-c-f- newfile original.tarیک بایگانی جدید تنها با دو ورودی ایجاد میکند. به همین ترتیب،
tar-czf---formatpax@-یک بایگانی را از ورودی استاندارد (که قالب آن بهطور خودکار تعیین خواهد شد) میخواند و آن را به یک بایگانی با قالب pax و فشردهسازی gzip در خروجی استاندارد تبدیل میکند. به این ترتیب،
tarمیتواند برای تبدیل بایگانیها از یک قالب به قالبی دیگر استفاده شود. -a,--auto-compress- (تنها در
حالت c) از
پسوند
بایگانی
برای تعیین
مجموعه
قالب و
فشردهسازیها
استفاده
میکند.
بهعنوان
یک مثال
ساده،
tar-a-cfarchive.tgz source.c source.hیک بایگانی جدید با قالب محدودشده pax و فشردهسازی gzip ایجاد میکند،
tar-a-cfarchive.tar.bz2.uu source.c source.hیک بایگانی جدید با قالب محدودشده pax و فشردهسازی bzip2 و فشردهسازی uuencode ایجاد میکند،
tar-a-cfarchive.zip source.c source.hیک بایگانی جدید با قالب zip ایجاد میکند،
tar-a-jcfarchive.tgz source.c source.hگزینه “-j” را نادیده میگیرد و یک بایگانی جدید با قالب محدودشده pax و فشردهسازی gzip ایجاد میکند،
tar-a-jcfarchive.xxx source.c source.hاگر پسوند ناشناخته باشد یا پسوندی وجود نداشته باشد، یک بایگانی جدید با قالب محدودشده pax و فشردهسازی bzip2 ایجاد میکند.
--acls- (تنها در
حالتهای 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ترجیح داده میشود. -B,--read-full-blocks- بهمنظور سازگاری با سایر پیادهسازیهای tar(1) نادیده گرفته میشود.
-bblocksize,--block-sizeblocksize- اندازه بلوک را بر حسب رکوردهای 512 بایتی، برای ورودی/خروجی درایو نوار مشخص میکند. بهعنوان یک قاعده کلی، این آرگومان تنها هنگام خواندن از یا نوشتن در درایوهای نوار مورد نیاز است و معمولاً حتی در آن حالت نیز نیازی نیست، زیرا اندازه بلوک پیشفرض 20 رکورد (10240 بایت) بسیار متداول است.
-Cdirectory,--cddirectory,--directorydirectory- در حالتهای c و r، این گزینه پوشه را پیش از افزودن پروندههای بعدی تغییر میدهد. در حالت x، پس از باز کردن بایگانی اما پیش از استخراج ورودیها از بایگانی، پوشه را تغییر میدهد.
--chroot- (تنها در
حالت x)
chroot() به پوشهٔ جاری پس از پردازش هرگونه گزینهٔ-Cو پیش از استخراج هر پروندهای. --clamp-mtime- (استفاده
همراه با
--mtime) زمان تغییر تنها در صورتی تنظیم میشود که پرونده جدیدتر باشد از تاریخ مشخصشده در--mtime. --clear-nochange-fflags- (تنها در حالت x) پیش از حذف اشیای سامانهٔ پرونده به منظور جایگزینی آنها، صفتهای پرونده یا پرچمهای پروندهٔ ویژهٔ سکو را که ممکن است مانع از حذف شوند، پاک میکند.
--excludepattern- پروندهها یا پوشههایی را که با الگوی مشخصشده مطابقت دارند، پردازش نمیکند. توجه داشته باشید که استثناها بر الگوها یا نامهای پروندهٔ مشخصشده در خط فرمان اولویت دارند.
--exclude-vcs- پروندهها یا پوشههایی را که بهطور داخلی توسط این سامانههای کنترل نسخه استفاده میشوند، پردازش نمیکند: ‘Arch’, ‘Bazaar’, ‘CVS’, ‘Darcs’, ‘Mercurial’, ‘RCS’, ‘SCCS’, ‘SVN’ و ‘git’.
--fflags- (تنها در
حالتهای c،
r، u و x)
صفتهای
پرونده یا
پرچمهای
پروندهٔ
ویژهٔ سکو
را بایگانی
یا استخراج
میکند. این
رفتار
برعکس
--no-fflagsبوده و رفتار پیشفرض در حالتهای c، r و u است، یا اگرtarدر حالت x با دسترسی root اجرا شود. --formatformat- (تنها در حالتهای c، r و u) از قالب مشخصشده برای بایگانی ایجادشده استفاده میکند. قالبهای پشتیبانیشده عبارتند از: “cpio”, “pax”, “shar”, و “ustar”. سایر قالبها نیز ممکن است پشتیبانی شوند؛ برای کسب اطلاعات بیشتر دربارهٔ قالبهای پشتیبانیشدهٔ کنونی به libarchive-formats(5) مراجعه کنید. در حالتهای r و u، هنگام گسترش یک بایگانی موجود، قالب مشخصشده در اینجا باید با قالب بایگانی موجود روی دیسک سازگار باشد.
-ffile,--filefile- خواندن بایگانی از پروندهٔ مشخصشده یا نوشتن در آن. نام پرونده برای ورودی استاندارد یا خروجی استاندارد میتواند - باشد. مقدار پیشفرض بسته به سیستم متفاوت است؛ در FreeBSD ، پیشفرض /dev/sa0 است؛ در لینوکس، پیشفرض /dev/st0 است.
--gidid- استفاده از
شماره
شناسهٔ
گروه
ارائهشده.
هنگام
استخراج،
این گزینه
جایگزین
شناسهٔ
گروه در
بایگانی
میشود؛
نام گروه در
بایگانی
نادیده
گرفته
خواهد شد.
هنگام
ایجاد، این
گزینه
جایگزین
شناسهٔ
گروه
خواندهشده
از دیسک
میشود؛
اگر
--gnameنیز مشخص نشده باشد، نام گروه مطابق با شناسهٔ گروه تنظیم خواهد شد. --gnamename- استفاده از
نام گروه
ارائهشده.
هنگام
استخراج،
این گزینه
جایگزین
نام گروه در
بایگانی
میشود؛
اگر نام
گروه
ارائهشده
در سیستم
وجود
نداشته
باشد،
شناسهٔ
گروه (از
بایگانی یا
از گزینهٔ
--gid) بهجای آن استفاده خواهد شد. هنگام ایجاد، این گزینه نام گروهی را که در بایگانی ذخیره خواهد شد تنظیم میکند؛ این نام در برابر پایگاهدادهٔ گروههای سیستم اعتبارسنجی نخواهد شد. --groupname[:gid]- استفاده از
گروه
ارائهشده؛
اگر gid
ارائه نشده
باشد، name
میتواند
نام گروه یا
شناسهٔ
عددی باشد.
برای
جزئیات،
گزینهٔ
--gnameرا ببینید. -H- (فقط در حالتهای c و r) پیوندهای نمادین ذکرشده در خط فرمان دنبال خواهند شد؛ هدف پیوند بایگانی خواهد شد، نه خود پیوند.
-h- (فقط در
حالتهای c
و r) مترادفی
برای
-L. -I- مترادفی
برای
-T. --help- نمایش راهنمای استفاده.
--hfsCompression- (فقط در حالت x) ویژهٔ Mac OS X (نسخهٔ 10.6 یا بالاتر). پروندههای عادی استخراجشده را با فشردهسازی HFS+ فشرده میکند.
--ignore-zeros- نام
مستعاری
برای
--optionsread_concatenated_archivesجهت سازگاری با GNU tar. --includepattern- تنها
پروندهها
یا
پوشههایی
را پردازش
میکند که
با الگوی
مشخصشده
مطابقت
دارند. توجه
داشته
باشید که
استثناهای
مشخصشده
با
--excludeبر موارد گنجاندهشده اولویت دارند. اگر هیچ موردی برای گنجاندن بهطور صریح مشخص نشده باشد، همه ورودیها بهطور پیشفرض پردازش میشوند. گزینهٔ--includeبهویژه هنگام فیلتر کردن بایگانیها مفید است. برای مثال، دستورtar-c-fnew.tar--include='*foo*'@old.tgzیک بایگانی جدید new.tar ایجاد میکند که تنها شامل ورودیهایی از old.tgz است، حاوی رشتهٔ ‘foo’.
-J,--xz- (تنها در
حالت c)
فشردهسازی
بایگانی
حاصل با
xz(1). در
حالتهای
استخراج یا
فهرست، این
گزینه
نادیده
گرفته
میشود.
توجه داشته
باشید که
این
پیادهسازی
tarفشردهسازی XZ را هنگام خواندن بایگانیها بهطور خودکار تشخیص میدهد. -j,--bzip,--bzip2,--bunzip2- (تنها در
حالت c)
فشردهسازی
بایگانی
حاصل با
bzip2(1). در
حالتهای
استخراج یا
فهرست، این
گزینه
نادیده
گرفته
میشود.
توجه داشته
باشید که
این
پیادهسازی
tarفشردهسازی bzip2 را هنگام خواندن بایگانیها بهطور خودکار تشخیص میدهد. -k,--keep-old-files- (تنها در حالت x) پروندههای موجود را بازنویسی نمیکند. بهویژه، اگر یک پرونده بیش از یک بار در یک بایگانی ظاهر شود، نسخههای بعدی بر روی نسخههای قبلی بازنویسی نخواهند شد.
--keep-newer-files- (تنها در حالت x) پروندههای موجودی را که جدیدتر از نسخههای موجود در بایگانی در حال استخراج هستند، بازنویسی نمیکند.
-L,--dereference- (تنها در حالتهای c و r) همه پیوندهای نمادین دنبال خواهند شد. بهطور معمول، پیوندهای نمادین همانگونه که هستند بایگانی میشوند. با این گزینه، در عوض مقصد پیوند بایگانی خواهد شد.
-l,--check-links- (تنها در حالتهای c و r) یک پیام هشدار صادر میکند مگر اینکه همه پیوندها به هر پرونده بایگانی شده باشند.
--lrzip- (تنها در
حالت c)
فشردهسازی
بایگانی
حاصل با
lrzip(1). در
حالتهای
استخراج یا
فهرست، این
گزینه
نادیده
گرفته
میشود.
توجه داشته
باشید که
این
پیادهسازی
tarفشردهسازی lrzip را هنگام خواندن بایگانیها بهطور خودکار تشخیص میدهد. --lz4- (تنها در
حالت c)
بایگانی را
پیش از
نوشتن، با
فشردهسازی
سازگار با lz4
فشرده
میکند. در
حالتهای
استخراج یا
فهرستگیری،
این گزینه
نادیده
گرفته
میشود.
توجه داشته
باشید که
این
پیادهسازی
از
tarفشردهسازی lz4 را هنگام خواندن بایگانیها به صورت خودکار تشخیص میدهد. --zstd- (تنها در
حالت c)
بایگانی را
پیش از
نوشتن، با
فشردهسازی
سازگار با zstd
فشرده
میکند. در
حالتهای
استخراج یا
فهرستگیری،
این گزینه
نادیده
گرفته
میشود.
توجه داشته
باشید که
این
پیادهسازی
از
tarفشردهسازی zstd را هنگام خواندن بایگانیها به صورت خودکار تشخیص میدهد. --lzma- (تنها در
حالت c)
بایگانی
حاصل را با
الگوریتم
اصلی LZMA
فشرده
میکند. در
حالتهای
استخراج یا
فهرستگیری،
این گزینه
نادیده
گرفته
میشود.
استفاده از
این گزینه
توصیه
نمیشود و
بایگانیهای
جدید باید
در عوض با
--xzایجاد شوند. توجه داشته باشید که این پیادهسازی ازtarفشردهسازی LZMA را هنگام خواندن بایگانیها به صورت خودکار تشخیص میدهد. --lzop- (تنها در
حالت c)
بایگانی
حاصل را با
lzop(1)
فشرده
میکند. در
حالتهای
استخراج یا
فهرستگیری،
این گزینه
نادیده
گرفته
میشود.
توجه داشته
باشید که
این
پیادهسازی
از
tarفشردهسازی LZO را هنگام خواندن بایگانیها به صورت خودکار تشخیص میدهد. -m,--modification-time- (تنها در حالت x) زمان ویرایش را استخراج نمیکند. به صورت پیشفرض، زمان ویرایش روی زمان ذخیرهشده در بایگانی تنظیم میشود.
--mac-metadata- (تنها در
حالتهای 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) --mtimedate- (تنها در حالتهای c، r و u) زمان ویرایش پروندههای اضافهشده را روی تاریخ مشخصشده تنظیم میکند.
-n,--norecurse,--no-recursion- به صورت بازگشتی روی محتوای پوشهها عمل نمیکند.
--newerdate- (تنها در حالتهای c، r و u) تنها پروندهها و پوشههای جدیدتر از تاریخ مشخصشده را شامل میشود. این گزینه مدخلهای ctime را مقایسه میکند.
--newer-mtimedate- (تنها در
حالتهای c،
r و u) مانند
--newer, با این تفاوت که به جای مدخلهای ctime، مدخلهای mtime را مقایسه میکند. --newer-thanfile- (تنها در حالتهای c، r و u) تنها پروندهها و پوشههایی را شامل میشود که از پروندهٔ مشخصشده جدیدتر باشند. این گزینه ورودیهای ctime را مقایسه میکند.
--newer-mtime-thanfile- (تنها در
حالتهای c،
r و u) مشابه
--newer-than, با این تفاوت که به جای ورودیهای ctime، ورودیهای mtime را مقایسه میکند. --nodump- (تنها در حالتهای c و r) با صرفنظر کردن از این پرونده، پرچم پروندهٔ nodump را رعایت میکند.
--nopreserveHFSCompression- (تنها در حالت x) مخصوص Mac OS X (نسخهٔ v10.6 یا جدیدتر). پروندههای عادی استخراجشدهای را که پیش از بایگانی با فشردهسازی HFS+ فشرده شده بودند، فشرده نمیکند. بهصورت پیشفرض، پروندههای عادی مجدداً با فشردهسازی HFS+ فشرده میشوند.
--null- (استفاده
همراه با
-Iیا-T) نامهای پرونده یا الگوها به جای خطهای جدید، با نویسههای null از یکدیگر جدا میشوند. این ویژگی اغلب برای خواندن نامهای پرونده استفاده میشود؛ نظیر خروجی گزینهٔ-print0در find(1). --no-acls- (تنها در
حالتهای c،
r، u و x) ACLهای POSIX.1e
یا NFSv4 را
بایگانی یا
استخراج
نمیکند.
این گزینه
معکوسِ
--aclsاست و رفتار پیشفرض خواهد بود اگرtarتوسط کاربر غیر root در حالت x اجرا شود (در Mac OS X برای هر کاربری در حالتهای c، r، u و x). --no-fflags- (تنها در
حالتهای c،
r، u و x)
ویژگیهای
پرونده یا
پرچمهای
پرونده را
بایگانی یا
استخراج
نمیکند.
این گزینه
معکوسِ
--fflagsاست و رفتار پیشفرض خواهد بود اگرtarتوسط کاربر غیر root در حالت x اجرا شود. --no-mac-metadata- (تنها در
حالتهای c،
r، u و x) مخصوص Mac OS X.
ACLها و
ویژگیهای
گسترشیافتهٔ
پرونده را
با استفاده
از copyfile(3)
در قالب AppleDouble
بایگانی یا
استخراج
نمیکند.
این گزینه
معکوسِ
--mac-metadata. است و رفتار پیشفرض خواهد بود اگرtarتوسط کاربر غیر root در حالت x اجرا شود. --no-read-sparse- (تنها در
حالتهای c،
r و u) اطلاعات
پروندههای
پراکنده (sparse)
را از دیسک
نمیخواند.
این گزینه
رفتاری
معکوس دارد
در مقایسه
با
--read-sparse. --no-safe-writes- (فقط در
حالت x)
پروندههای
موقت ایجاد
نکند و از
rename(2)
برای
جایگزینی
پروندههای
اصلی
استفاده
نکند. این
برعکسِ
--safe-writesاست. --no-same-owner- (فقط در
حالت x)
شناسههای
مالک و گروه
را استخراج
نکند. این
برعکسِ
--same-ownerو رفتار پیشفرض است اگرtarبهعنوان کاربری غیر از root اجرا شود. --no-same-permissions- (فقط در
حالت x)
مجوزهای
کامل (SGID، SUID،
بیت چسبنده
(sticky bit)،
ویژگیهای
پرونده یا
پرچمهای
پرونده،
ویژگیهای
گسترشیافتهٔ
پرونده و
ACLها) را
استخراج
نکند. این
برعکسِ
-pو رفتار پیشفرض است اگرtarبهعنوان کاربری غیر از root اجرا شود. --no-xattrs- (فقط در
حالتهای c،
r، u و x)
ویژگیهای
گسترشیافتهٔ
پرونده را
بایگانی یا
استخراج
نکند. این
برعکسِ
--xattrsو رفتار پیشفرض است اگرtarبهعنوان کاربری غیر از root در حالت x اجرا شود. --numeric-owner- این معادل
است با
--uname""--gname"". در هنگام استخراج، باعث میشود نامهای کاربر و گروه در بایگانی به نفع شناسههای عددی کاربر و گروه نادیده گرفته شوند. در هنگام ایجاد، باعث میشود نامهای کاربر و گروه در بایگانی ذخیره نشوند. -O,--to-stdout- (فقط در حالتهای x و t) در حالت استخراج (-x)، پروندهها به جای استخراج روی دیسک، در خروجی استاندارد نوشته خواهند شد. در حالت فهرست (-t)، فهرست پروندهها به جای خروجی استانداردِ معمول، در stderr نوشته خواهد شد.
-o- (حالت x) به
جای کاربر و
گروه
مشخصشده
در
بایگانی،
از کاربر و
گروه
کاربری که
برنامه را
اجرا
میکند
استفاده
شود. توجه
داشته
باشید که
این گزینه
هیچ تأثیری
ندارد مگر
اینکه
-pمشخص شده باشد و برنامه توسط کاربر root اجرا شود. در این حالت، حالتها و پرچمهای پرونده از بایگانی بازیابی خواهند شد، اما ACLها یا اطلاعات مالک در بایگانی نادیده گرفته میشوند. -o- (حالتهای
c، r و u)
مترادفی
برای
--formatustar --olderdate- (فقط در حالتهای c، r و u) تنها پروندهها و دایرکتوریهای قدیمیتر از تاریخ مشخصشده را شامل میشود. این گزینه ورودیهای ctime را مقایسه میکند.
--older-mtimedate- (فقط در
حالتهای c،
r و u) مشابه
--older, با این تفاوت که بهجای ورودیهای ctime، ورودیهای mtime را مقایسه میکند. --older-thanfile- (فقط در حالتهای c، r و u) تنها پروندهها و دایرکتوریهای قدیمیتر از پرونده مشخصشده را شامل میشود. این گزینه ورودیهای ctime را مقایسه میکند.
--older-mtime-thanfile- (فقط در
حالتهای c،
r و u) مشابه
--older-than, با این تفاوت که بهجای ورودیهای ctime، ورودیهای mtime را مقایسه میکند. --one-file-system- (حالتهای c، r و u) از نقاط اتصال عبور نمیکند.
--optionsoptions- انتخاب
رفتارهای
اختیاری
برای
ماژولهای
خاص.
آرگومان یک
رشته متنی
شامل
کلیدواژهها
و مقادیر
جداشده با
کاما است.
این موارد
به
ماژولهایی
که
قالبهای
خاص را
مدیریت
میکنند
منتقل
میشوند تا
نحوه رفتار
آن قالبها
را کنترل
کنند. هر
گزینه یکی
از شکلهای
زیر را
دارد:
- key=value
- کلید در تمام ماژولهایی که از آن پشتیبانی میکنند روی مقدار مشخصشده تنظیم خواهد شد. ماژولهایی که از این کلید پشتیبانی نمیکنند، آن را نادیده میگیرند.
- key
- کلید در
تمام
ماژولهایی
که از آن
پشتیبانی
میکنند
فعال
خواهد شد.
این معادل
است با
key
=1. - !key
- کلید در تمام ماژولهایی که از آن پشتیبانی میکنند غیرفعال خواهد شد.
- module:key=value, module:key, module:!key
- مانند بالا، اما کلید و مقدار متناظر تنها در اختیار ماژولهایی قرار میگیرد که نام آنها مطابقت دارد با module.
فهرست کامل ماژولها و کلیدهای پشتیبانیشده برای حالتهای ایجاد و الحاق موجود است در archive_write_set_options(3) و برای حالتهای استخراج و فهرستگیری در archive_read_set_options(3).
نمونههایی از گزینههای پشتیبانیشده:
iso9660:joliet- پشتیبانی
از
افزونههای
Joliet. این
گزینه
بهصورت
پیشفرض
فعال است،
از
!jolietیاiso9660:!jolietبرای غیرفعال کردن استفاده کنید. iso9660:rockridge- پشتیبانی
از
پسوندهای Rock
Ridge. این
ویژگی به
طور
پیشفرض
فعال است،
برای
غیرفعال
کردن از
!rockridgeیاiso9660:!rockridgeاستفاده کنید. gzip:compression-level- یک عدد صحیح دهدهی از 1 تا 9 که سطح فشردهسازی gzip را مشخص میکند.
gzip:timestamp- ذخیره
برچسب
زمان. این
ویژگی به
طور
پیشفرض
فعال است،
برای
غیرفعال
کردن از
!timestampیاgzip:!timestampاستفاده کنید. lrzip:compression=type- استفاده از type به عنوان روش فشردهسازی. مقادیر پشتیبانیشده عبارتند از bzip2، gzip، lzo (بسیار سریع)، و zpaq (بهترین، بسیار کند).
lrzip:compression-level- یک عدد صحیح دهدهی از 1 تا 9 که سطح فشردهسازی lrzip را مشخص میکند.
lz4:compression-level- یک عدد صحیح دهدهی از 1 تا 9 که سطح فشردهسازی lzop را مشخص میکند.
lz4:stream-checksum- فعالسازی
مجموع
مقابلهای
جریان. این
گزینه به
طور
پیشفرض
فعال است،
برای
غیرفعال
کردن از
lz4:!stream-checksumاستفاده کنید. lz4:block-checksum- فعالسازی مجموع مقابلهای بلوک (به طور پیشفرض غیرفعال است).
lz4:block-size- یک عدد صحیح دهدهی از 4 تا 7 که اندازه بلوک فشردهسازی lz4 را مشخص میکند (به طور پیشفرض روی 7 تنظیم شده است).
lz4:block-dependence- استفاده از بلوک پیشینِ بلوک در حال فشردهسازی به عنوان واژهنامه فشردهسازی جهت بهبود نسبت فشردهسازی.
zstd:compression-level=N- یک عدد صحیح دهدهی که سطح فشردهسازی zstd را مشخص میکند. مقادیر پشتیبانیشده به نسخه کتابخانه بستگی دارند، مقادیر متداول از 1 تا 22 هستند.
zstd:threads=N- مشخص کردن تعداد ریسههای کاری مورد استفاده، یا 0 برای استفاده از همان تعداد ریسه به اندازه هستههای CPU موجود در سیستم.
zstd:frame-per-file- شروع یک فریم فشردهسازی جدید در ابتدای هر پرونده در بایگانی.
zstd:min-frame-in=N- در ترکیب
با
zstd:frame-per-file, فریم فشردهسازی جدیدی آغاز نمیشود مگر اینکه اندازه فشردهنشده فریم فعلی حداقل N بایت باشد. میتوان پس از عدد ازk /kB,M /MB, یاG /GBبرای نشان دادن به ترتیب کیلوبایت، مگابایت یا گیگابایت استفاده کرد. zstd:min-frame-out=N,zstd:min-frame-size=N- در ترکیب
با
zstd:frame-per-file, فریم فشردهسازی جدیدی را آغاز نمیکند مگر اینکه اندازه فشردهشدهٔ فریم فعلی حداقل N بایت باشد. این عدد میتواند باk /kB,M /MB, یاG /GBدنبال شود تا به ترتیب نشاندهنده کیلوبایت، مگابایت یا گیگابایت باشد. zstd:max-frame-in=N,zstd:max-frame-size=N- در
سریعترین
زمان ممکن
پس از
اینکه
اندازه
فشردهنشدهٔ
فریم فعلی
از N
بایت
بیشتر شد،
فریم
فشردهسازی
جدیدی را
آغاز
میکند.
این عدد
میتواند
با
k /kB,M /MB, یاG /GBدنبال شود تا به ترتیب نشاندهنده کیلوبایت، مگابایت یا گیگابایت باشد. مقادیر کمتر از 1,024 رد خواهند شد. zstd:max-frame-out=N- در
سریعترین
زمان ممکن
پس از
اینکه
اندازه
فشردهشدهٔ
فریم فعلی
از N
بایت
بیشتر شد،
فریم
فشردهسازی
جدیدی را
آغاز
میکند.
این عدد
میتواند
با
k /kB,M /MB, یاG /GBدنبال شود تا به ترتیب نشاندهنده کیلوبایت، مگابایت یا گیگابایت باشد. مقادیر کمتر از 1,024 رد خواهند شد. lzop:compression-level- یک عدد صحیح دهدهی از 1 تا 9 که سطح فشردهسازی lzop را مشخص میکند.
xz:compression-level- یک عدد صحیح دهدهی از 0 تا 9 که سطح فشردهسازی xz را مشخص میکند.
xz:threads- تعداد ریسههای کاری مورد استفاده را مشخص میکند. تنظیم threads روی مقدار ویژه 0 باعث میشود xz(1) به تعداد هستههای CPU موجود در سیستم از ریسه استفاده کند.
mtree: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- تمام
کلیدواژههای
بالا را
فعال
میکند.
همچنین
میتوانید
از
mtree:!allبرای غیرفعال کردن تمام کلیدواژهها استفاده کنید. mtree:use-set- فعالسازی
تولید
خطوط
/setدر خروجی. mtree:indent- تولید خروجی خوانا برای انسان با ایجاد تورفتگی در گزینهها و شکستن خطوط جهت جا شدن در 80 ستون.
zip:compression=type- استفاده از type بهعنوان روش فشردهسازی. مقادیر پشتیبانیشده عبارتند از store (فشردهنشده) و deflate (الگوریتم gzip).
zip:encryption- فعالسازی رمزنگاری با استفاده از رمزنگاری سنتی zip.
zip:encryption=type- استفاده از type بهعنوان نوع رمزنگاری. مقادیر پشتیبانیشده عبارتند از zipcrypt (رمزنگاری سنتی zip)، aes128 (رمزنگاری WinZip AES-128) و aes256 (رمزنگاری WinZip AES-256).
read_concatenated_archives- نادیده
گرفتن
بلوکهای
صفرشده در
بایگانی،
که هنگام
متصل کردن
چندین
بایگانی tar
به یکدیگر
رخ میدهد.
بدون این
گزینه،
تنها
محتویات
نخستین
بایگانی
متصلشده
خوانده
خواهد شد.
این گزینه
مشابه
گزینهٔ
-i,--ignore-zerosدر GNU tar است.
اگر گزینهٔ ارائهشده توسط هیچ ماژولی پشتیبانی نشود، یک خطای مهلک خواهد بود.
-P,--absolute-paths- حفظ نام
مسیرها.
بهطور
پیشفرض،
در نام
مسیرهای
مطلق
(مسیرهایی
که با
نویسهٔ /
آغاز
میشوند)،
اسلش
ابتدایی هم
هنگام
ایجاد
بایگانیها
و هم هنگام
استخراج از
آنها حذف
میشود.
همچنین،
tarاز استخراج ورودیهای بایگانی که نام مسیر آنها حاوی .. است یا دایرکتوری مقصد آنها توسط یک پیوند نمادین تغییر مییابد، خودداری خواهد کرد. این گزینه مانع از بروز این رفتارها میشود. -p,--insecure,--preserve-permissions- (فقط در
حالت x) حفظ
دسترسیهای
پرونده.
تلاش برای
بازیابی
دسترسیهای
کامل، شامل
حالتهای
پرونده،
ویژگیهای
پرونده یا
پرچمهای
پرونده،
ویژگیهای
گسترشیافتهٔ
پرونده و
ACLها، در
صورت وجود،
برای هر
مورد
استخراجشده
از بایگانی.
این معکوسِ
--no-same-permissionsاست و در صورتی کهtarبهعنوان root اجرا شود، حالت پیشفرض است. همچنین میتوان با مشخص کردن موارد زیر آن را تا حدی لغو کرد:--no-acls,--no-fflags,--no-mac-metadataیا--no-xattrs. --passphrasepassphrase- از passphrase برای استخراج یا ایجاد یک بایگانی رمزگذاریشده استفاده میشود. در حال حاضر، zip تنها قالب پشتیبانیشدهای است که از رمزگذاری پشتیبانی میکند. نباید از این گزینه استفاده کنید مگر اینکه بدانید استفاده از این گزینه تا چه حد ناامن است.
--posix- (فقط در
حالتهای c،
r و u) مترادفی
برای
--formatpax -q,--fast-read- (فقط در حالتهای x و t) تنها اولین مدخل بایگانی را که با هر الگو یا عملوند نام پرونده مطابقت دارد، استخراج یا فهرست میکند. به محض اینکه هر الگو یا نام پرونده مشخصشده مطابقت یافت، خارج میشود. بهطور پیشفرض، بایگانی همیشه تا انتها خوانده میشود، چرا که ممکن است چندین مدخل با نام یکسان وجود داشته باشد و طبق قرارداد، مدخلهای بعدی مدخلهای قبلی را بازنویسی میکنند. این گزینه برای بهینهسازی کارایی ارائه شده است.
--read-sparse- (فقط در
حالتهای c،
r و u) اطلاعات
پروندههای
پراکنده را
از دیسک
میخواند.
این معکوسِ
--no-read-sparseو رفتار پیشفرض است. -S- (فقط در حالت x) پروندهها را به عنوان پروندههای پراکنده استخراج میکند. برای هر بلوک روی دیسک، ابتدا بررسی میکند که آیا فقط شامل بایتهای NULL است و در غیر این صورت از روی آن عبور میکند (seek انجام میدهد). این عملکرد مشابه گزینه conv=sparse در dd است.
-spattern- نام پرونده یا اعضای بایگانی را مطابق با pattern تغییر میدهد. الگو دارای قالب /old/new/[bghHprRsS] است که در آن old یک عبارت باقاعده پایه، new رشته جایگزین بخش مطابقتیافته، و حروف اختیاری انتهایی اصلاحکننده نحوه انجام جایگزینی هستند. اگر old مطابقت نیابد، الگو نادیده گرفته میشود. درون new, ~ با بخش مطابقتیافته، و \1 تا \9 با محتوای گروه ثبتشده متناظر جایگزین میشود. حرف اختیاری انتهایی g مشخص میکند که تطبیق باید پس از بخش مطابقتیافته ادامه یابد و با اولین الگوی تطبیقنیافته متوقف شود. حرف اختیاری انتهایی s مشخص میکند که الگو برای مقدار پیوندهای نمادین اعمال میشود. حرف اختیاری انتهایی p مشخص میکند که پس از یک جایگزینی موفق، نام مسیر اصلی و نام مسیر جدید باید در خطای استاندارد چاپ شوند. حرف اختیاری انتهایی b مشخص میکند که جایگزینی باید از ابتدای رشته تطبیق داده شود، نه دقیقاً پس از موقعیتی که جایگزینی منطبق قبلی به پایان رسیده است. نویسههای اختیاری انتهایی H، R یا S بهترتیب جایگزینیها را برای هدفهای پیوند سخت، نام پروندههای عادی یا هدفهای پیوند نمادین غیرفعال میکنند. نویسههای اختیاری انتهایی h، r یا s بهترتیب جایگزینیها را برای هدفهای پیوند سخت، نام پروندههای عادی یا هدفهای پیوند نمادین فعال میکنند. حالت پیشفرض hrs است که جایگزینیها را برای همه نامها اعمال میکند. بهویژه، مشخص کردن h، r یا s هرگز ضروری نیست.
--safe-writes- (فقط در
حالت x)
استخراج
پروندهها
بهصورت
اتمیک.
بهطور
پیشفرض
tarپروندهٔ اصلی همنام با پروندهٔ استخراجشده را (در صورت وجود) پیوندزدایی (unlink) میکند، و سپس بلافاصله آن را با همان نام ایجاد کرده و در آن مینویسد. برای مدت زمان کوتاهی، برنامههایی که تلاش میکنند به پرونده دسترسی پیدا کنند ممکن است آن را پیدا نکنند، یا نتایج ناقصی مشاهده کنند. اگر--safe-writesفعال باشد،tarابتدا یک پروندهٔ موقت یکتا ایجاد میکند، سپس محتویات جدید را در پروندهٔ موقت مینویسد، و در نهایت با استفاده از rename(2) نام پروندهٔ موقت را بهصورت اتمیک به نام نهایی آن تغییر میدهد. این کار تضمین میکند برنامهای که به پرونده دسترسی پیدا میکند، در همه حال یا محتویات قدیمی را مشاهده کند یا محتویات جدید را. --same-owner- (فقط در
حالت x)
استخراج
شناسههای
مالک و
گروه. این
برعکس
--no-same-ownerاست و اگرtarبهعنوان root اجرا شود، رفتار پیشفرض است. --strip-componentscount- حذف تعداد مشخصشده از مؤلفههای ابتدایی مسیر. نامهای مسیر با مؤلفههای کمتر، بدون هشدار نادیده گرفته میشوند. توجه داشته باشید که نام مسیر پس از بررسی الگوهای شمول/عدمشمول، اما پیش از بررسیهای امنیتی ویرایش میشود.
-Tfilename,--files-fromfilename- در حالت x یا
t،
tarفهرست نامهای مورد نظر برای استخراج را از filename میخواند. در حالت c،tarنامهای مورد نظر برای بایگانی را از filename میخواند. نام ویژهٔ “-C” بهتنهایی در یک سطر، باعث تغییر دایرکتوری جاری به دایرکتوری مشخصشده در سطر بعدی خواهد شد. نامها با خط جدید خاتمه مییابند مگر اینکه--nullمشخص شده باشد. توجه داشته باشید که--nullهمچنین رفتار ویژهٔ سطرهای حاوی “-C” را غیرفعال میکند. نکته: اگر در حال ایجاد فهرست پروندهها با استفاده از find(1) هستید، احتمالاً مایل خواهید بود از-nنیز استفاده کنید. --totals- (فقط در حالتهای c، r و u) پس از بایگانی کردن همهٔ پروندهها، خلاصهای را در stderr چاپ میکند.
-U,--unlink,--unlink-first- (تنها در
حالت x) پیش
از ایجاد
پروندهها،
پیوند
آنها را
حذف (unlink)
میکند. اگر
بیشتر
پروندهها
از قبل وجود
داشته
باشند، این
میتواند
یک
بهینهسازی
جزئی در
عملکرد
باشد، اما
اگر بیشتر
پروندهها
از قبل وجود
نداشته
باشند،
میتواند
کار را
کندتر کند.
این پرچم
همچنین
باعث
میشود
tarبهجای گزارش خطا، پیوندهای نمادین دایرکتوریهای میانی را حذف کند. برای جزئیات بیشتر، بخش SECURITY در زیر را ببینید. --uidid- از شماره
شناسه
کاربر
ارائهشده
استفاده
کرده و نام
کاربر را از
بایگانی
نادیده
میگیرد. در
هنگام
ایجاد، اگر
--unameنیز مشخص نشده باشد، نام کاربر بهگونهای تنظیم میشود که با شناسه کاربر مطابقت داشته باشد. --unamename- از نام
کاربر
ارائهشده
استفاده
میکند. در
هنگام
استخراج،
این گزینه
جایگزین
نام کاربر
در بایگانی
میشود؛
اگر نام
کاربر
ارائهشده
روی سیستم
وجود
نداشته
باشد،
نادیده
گرفته شده و
در عوض از
شناسه
کاربر (از
بایگانی یا
از گزینه
--uid) استفاده خواهد شد. در هنگام ایجاد، این گزینه نام کاربری را که در بایگانی ذخیره خواهد شد تنظیم میکند؛ این نام در پایگاهداده کاربران سیستم اعتبارسنجی نمیشود. --use-compress-programprogram- ورودی (در حالت x یا t) یا خروجی (در حالت c) را بهجای استفاده از پشتیبانی فشردهسازی توکار، از طریق program هدایت (pipe) میکند.
--ownername[:uid]- از کاربر
ارائهشده
استفاده
میکند؛
اگر uid
ارائه نشده
باشد، name
میتواند
یک نام
کاربری یا
شناسه عددی
باشد. برای
جزئیات،
گزینه
--unameرا ببینید. -v,--verbose- خروجی با
جزئیات
کامل (verbose)
تولید
میکند. در
حالتهای
ایجاد و
استخراج،
tarنام هر پرونده را هنگام خواندن از بایگانی یا نوشتن در آن فهرست میکند. در حالت فهرست،tarخروجی مشابه دستور ls(1) تولید میکند. یک گزینه-vاضافی نیز جزئیاتی شبیه به ls را در حالت ایجاد و استخراج ارائه میدهد. --version- نسخه
tarوlibarchiveرا چاپ کرده و خارج میشود. -w,--confirmation,--interactive- برای هر عملیات درخواست تأیید میکند.
-Xfilename,--exclude-fromfilename- فهرستی از
الگوهای
مستثنیسازی
را از
پروندهٔ
مشخصشده
میخواند.
برای
اطلاعات
بیشتر
درباره
نحوه
مدیریت
موارد
مستثنی،
--excludeرا ببینید. --xattrs- (تنها در
حالتهای c،
r، u، x)
ویژگیهای
گسترشیافتهٔ
پرونده را
بایگانی یا
استخراج
میکند. این
گزینه
معکوسِ
--no-xattrsاست و رفتار پیشفرض در حالتهای c، r و u محسوب میشود، یا در صورتی کهtarدر حالت x به عنوان root اجرا شود. -y- (تنها در
حالت c)
بایگانی
حاصل را با
bzip2(1)
فشرده
میکند. در
حالتهای
استخراج یا
فهرستگیری،
این گزینه
نادیده
گرفته
میشود.
توجه داشته
باشید که
این
پیادهسازی
از
tarهنگام خواندن بایگانیها، فشردهسازی bzip2 را به صورت خودکار شناسایی میکند. -Z,--compress,--uncompress- (تنها در
حالت c)
بایگانی
حاصل را با
compress(1)
فشرده
میکند. در
حالتهای
استخراج یا
فهرستگیری،
این گزینه
نادیده
گرفته
میشود.
توجه داشته
باشید که
این
پیادهسازی
از
tarهنگام خواندن بایگانیها، فشردهسازی compress را به صورت خودکار شناسایی میکند. -z,--gunzip,--gzip- (تنها در
حالت c)
بایگانی
حاصل را با
gzip(1)
فشرده
میکند. در
حالتهای
استخراج یا
فهرستگیری،
این گزینه
نادیده
گرفته
میشود.
توجه داشته
باشید که
این
پیادهسازی
از
tarهنگام خواندن بایگانیها، فشردهسازی gzip را به صورت خودکار شناسایی میکند.
محیط (ENVIRONMENT)
متغیرهای
محیطی زیر
بر اجرای
tar تأثیر
میگذارند:
TAR_READER_OPTIONS- گزینههای
پیشفرض
برای
خوانندههای
قالب و
خوانندههای
فشردهسازی.
گزینهٔ
--optionsاین تنظیم را بازنویسی میکند. TAR_WRITER_OPTIONS- گزینههای
پیشفرض
برای
نویسندههای
قالب و
نویسندههای
فشردهسازی.
گزینهٔ
--optionsاین تنظیم را بازنویسی میکند. LANG- تنظیمات محلی (locale) مورد استفاده. برای اطلاعات بیشتر، environ(7) را ببینید.
TAPE- دستگاه
پیشفرض.
گزینه
-fجایگزین این مورد میشود. لطفاً برای جزئیات بیشتر، توضیحات گزینه-fدر بالا را ببینید. TZ- منطقه زمانی مورد استفاده هنگام نمایش تاریخها. برای اطلاعات بیشتر، environ(7) را ببینید.
کدهای خروج (EXIT STATUS)
The tar utility exits 0 on success,
and >0 if an error occurs.
مثالها (EXAMPLES)
دستور زیر یک بایگانی جدید به نام 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_set_options()
و
archive_write_set_options()
که در
archive_read(3) و
archive_write(3)
شرح داده
شدهاند
مراجعه
کنید.
سازگاری (COMPATIBILITY)
قالب آرگومانهای تجمیعشده برای سازگاری با پیادهسازیهای پیشین پشتیبانی میشود. این قالب شامل یک کلمه ابتدایی (بدون نویسه - در ابتدا) است که در آن هر نویسه نشاندهنده یک گزینه است. آرگومانها به صورت کلمات جداگانه در ادامه میآیند. ترتیب آرگومانها باید با ترتیب نویسههای متناظر در کلمه دستوری تجمیعشده مطابقت داشته باشد. برای مثال،
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 ارائه شدهاند.
امنیت (SECURITY)
برخی
مسائل
امنیتی در
میان
بسیاری از
برنامههای
بایگانی،
از جمله
tar مشترک
هستند.
بهویژه،
بایگانیهای
دستکاریشده
میتوانند
درخواست
کنند که
tar
پروندهها
را در
مکانهایی
بیرون از
دایرکتوری
مقصد
استخراج
کند. این
موضوع
میتواند
بهطور
بالقوه
برای وادار
کردن
کاربران
ناآگاه به
بازنویسی
پروندههایی
که قصد
بازنویسی
آنها را
نداشتند،
استفاده
شود. اگر
بایگانی
توسط superuser
استخراج
شود، هر
پروندهای
در سیستم
میتواند
بهطور
بالقوه
بازنویسی
شود. این
اتفاق به سه
روش
میتواند
رخ دهد.
اگرچه tar
سازوکارهایی
برای
محافظت در
برابر هر یک
از آنها
دارد،
کاربران
آگاه باید
از
پیامدهای
آن مطلع
باشند:
- مدخلهای
بایگانی
میتوانند
دارای
ناممسیرهای
مطلق باشند.
بهطور
پیشفرض،
tarبرای محافظت در برابر این مشکل، نویسهٔ ابتدایی / را پیش از بازیابی، از نام پروندهها حذف میکند. - مدخلهای
بایگانی
میتوانند
دارای
ناممسیرهایی
شامل
مؤلفههای
.. باشند.
بهطور
پیشفرض،
tarپروندههایی را که در ناممسیر خود دارای مؤلفههای .. باشند، استخراج نخواهد کرد. - مدخلهای
بایگانی
میتوانند
از
پیوندهای
نمادین
برای
بازیابی
پروندهها
در
دایرکتوریهای
دیگر
سوءاستفاده
کنند. یک
بایگانی
میتواند
یک پیوند
نمادین را
به
دایرکتوری
دیگری
بازیابی
کند، سپس از
آن پیوند
برای
بازیابی یک
پرونده در
آن
دایرکتوری
بهره ببرد.
برای
محافظت در
برابر این
موضوع،
tarهر مسیر استخراجشده را از نظر وجود پیوندهای نمادین بررسی میکند. اگر آخرین مؤلفهٔ مسیر یک پیوند نمادین باشد، حذف شده و با مدخل بایگانی جایگزین میشود. اگر-Uمشخص شده باشد، هر پیوند نمادین میانی نیز بدون قید و شرط حذف خواهد شد. اگر نه-Uو نه-Pمشخص شده باشند،tarاز استخراج آن مدخل خودداری خواهد کرد.
برای محافظت از خود، باید نسبت به هر بایگانی که از منابع غیرقابلاعتماد میآید محتاط باشید. باید محتویات یک بایگانی را با
tar
-tf filenameپیش از
استخراج
بررسی کنید.
باید از
گزینهٔ -k
برای
اطمینان از
اینکه tar
هیچ
پروندهٔ
موجودی را
بازنویسی
نخواهد
کرد، یا از
گزینهٔ -U
برای حذف
پروندههای
از پیش
موجود
استفاده
کنید.
بهطور کلی
نباید
هنگام اجرا
با
دسترسیهای
کاربر ارشد
(super-user)،
بایگانیها
را استخراج
کنید. توجه
داشته
باشید که
گزینهٔ -P
در tar
بررسیهای
امنیتی
بالا را
غیرفعال
کرده و به
شما امکان
میدهد یک
بایگانی را
ضمن حفظ
هرگونه نام
مسیر مطلق،
مؤلفههای
.. یا
پیوندهای
نمادین به
سایر
پوشهها
استخراج
کنید.
همچنین ببینید (SEE ALSO)
bzip2(1), compress(1), cpio(1), gzip(1), mt(1), pax(1), shar(1), xz(1), libarchive(3), libarchive-formats(5), tar(5)
استانداردها (STANDARDS)
در حال حاضر هیچ استاندارد 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 تعریف شدهاند.
تاریخچه (HISTORY)
دستور
tar در Seventh Edition Unix
که در
ژانویهٔ
۱۹۷۹ منتشر
شد، پدیدار
گردید.
پیادهسازیهای
متعدد
دیگری نیز
وجود
داشتهاند
که بسیاری
از آنها
قالب
پرونده را
گسترش
دادند.
پیادهسازی
مالکیت
عمومی
pdtar
جان گیلمور
(حدود
نوامبر
۱۹۸۷) بسیار
تأثیرگذار
بود و پایه و
اساس GNU tar را
تشکیل داد. GNU tar
بهعنوان tar
استاندارد
سیستم در
FreeBSD
گنجانده
شد، با شروع
از FreeBSD 1.0.
این یک بازپیادهسازی کامل بر پایه کتابخانه libarchive(3) است. نخستین بار با FreeBSD 5.4 در مه ۲۰۰۵ منتشر شد.
اشکالات (BUGS)
این
برنامه
برای تعریف
گزینه -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 |