مدیریت پیشرفته آرشیوهای Tar در NET 11.: کنترل دقیق بر فرمتهای ذخیرهسازی
نویسنده: وحید نصیری
تاریخ: ۱۴۰۵/۰۴/۰۶ ۰۹:۳۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
gzip به تنهایی قادر به فشردهسازی چندین فایل یا یک پوشه به صورت همزمان نیست و ساختار آن صرفاً برای فشردهسازی «یک تک فایل» (Single File) طراحی شده است..tar ایجاد شده و سپس با ابزاری مانند Gzip فشرده میشود تا فایل نهایی با پسوند .tar.gz به دست آید. مایکروسافت با درک این نیاز، در نسخههای اخیر داتنت پشتیبانی بومی از Tar را معرفی کرد و اکنون در NET 11.، قابلیتهای بسیار ارزشمندی برای کنترل دقیقتر این آرشیوها در اختیار توسعهدهندگان قرار داده است.TarFile ابزاری عالی برای ساخت آرشیو از پوشهها ارائه میداد، اما توسعهدهنده هیچ کنترلی روی فرمت خروجی نداشت. در این نسخه، داتنت به صورت هاردکد (Hardcoded) همیشه آرشیوها را با فرمت Pax تولید میکرد:// در داتنت 10 خروجی همیشه با فرمت Pax ایجاد میشد و امکان تغییر آن وجود نداشت
await TarFile.CreateFromDirectoryAsync(
sourceDirectoryName: "/source/",
destinationFileName: "/target/archive.tar",
includeBaseDirectory: true
);CreateFromDirectory و CreateFromDirectoryAsync، امکان تعیین فرمت دقیق خروجی از طریق انام (Enum) TarEntryFormat فراهم شده است.| نام مقدار | مقدار عددی | توضیحات فنی |
Unknown | 0 | فرمت ساختار آرشیو نامشخص یا تعییننشده است. |
V7 | 1 | فرمت سنتی AT&T Unix متعلق به سال 1979. |
Ustar | 2 | فرمت استاندارد POSIX IEEE 1003.1-1988 Unix. |
Pax | 3 | فرمت استاندارد مدرن POSIX IEEE 1003.1-2001. |
Gnu | 4 | فرمت اختصاصی و پرکاربرد پروژه GNU Tar. |
Gnu) تولید کنید:using System.Formats.Tar;
// مشخص کردن فرمت هدف به عنوان یک پارامتر ورودی جدید در داتنت 11
await TarFile.CreateFromDirectoryAsync(
sourceDirectoryName: "/source/",
destinationFileName: "/target/archive.tar",
includeBaseDirectory: true,
format: TarEntryFormat.Gnu
);نکته: انتخاب فرمت مناسب مستقیماً بر روی سازگاری سیستم مقصد تاثیرگذار است. اگر آرشیو شما قرار است در یک کانتینر لینوکسی قدیمی یا سیستمهای توزیعشده با ابزارهای بومی گنو استخراج شود، تنظیم فرمت روی TarEntryFormat.Gnu جلوی خطاهای احتمالی ناهماهنگی متادادهها و هدرهای نامتعارف را خواهد گرفت.TarFile، انعطافپذیری بالایی را برای توسعهدهندگانی که در اکوسیستمهای چندگانه (Cross-platform) فعالیت میکنند به ارمغان آوردهاست. در حالی که داتنت به خوبی فرآیند یکپارچهسازی فایلها را برای حل محدودیت فشردهسازی Gzip مدیریت میکند، اکنون کنترل کامل ساختار و استانداردهای داخلی این آرشیوها نیز به دست برنامهنویس سپرده شده است تا بیشترین میزان سازگاری، بدون پیچیدگیهای ابزارهای جانبی حاصل شود.