آموزش لینوکس LPIC1-101 (آرشیو فایلها)
آموزش لینوکس LPIC1-101 (آرشیو فایلها)
آرشیو فایل ها
یک وظیفه رایج مدیریت فایل در کنار فشرده سازي، آرشیو فایل هاست.
آرشیو کردن پروسه جمع آوري فایل ها و بسته بندي آنها در قالب یک فایل بزرگ است.
آرشیو کردن اغلب به عنوان بخشی از بک آپ هاي سیستم انجام می شود.
همچنین زمانی که داده قدیمی از یک سیستم به یک حافظه بلند مدت منتقل می شود صورت می پذیرد.
Tar – ابزار آرشیو با نوار (Tape Archiving Utility)
در دنیای نرم افزاری یونیکس، برنامه tar یک ابزار کلاسیک براي آرشیو کردن فایل هاست.
نام آن مخفف کلمه کوتاه tape archive است، که ریشه خود را از ابزاري براي ساختن نوارهاي بکاپ می گیرد.
در حالی که هنوز وظیفه سنتی خود یعنی بکاپ بر روي نوار (Tape) را انجام می دهد، بر روي دیگر دیوایس هاي ذخیره سازي نیز سازگار است.
گاها فایل هایی با نامی که به پسوند tar. و tgz. ختم می شوند را می بینیم که به ترتیب نشان دهنده یک آرشیو ساده tar و یک آرشیو gzipped است.
یک آرشیو tar می تواند از گروهی از فایل هاي جدا، یک یا چند شاخه سلسله مراتبی، یا مخلوط از هر دو تشکیل شده باشد.
ترکیب خط فرمان آن به این شکل است:
…tar mode[options] pathname
این در حالی است که mode یکی از حالت هاي عملیاتی است که در جدول زیر نشان داده شده است:
یک مثال با هم ببینیم:
این دستور یک آرشیو tar با نام faraznetwork.tar ایجاد می کند.
می توانیم ببینیم که حالت mode) c) و گزینه f که به منظور اختصاص نام آرشیو tar استفاده می شود با هم ترکیب شده اند
و نیازي به اضافه کردن کاراکتر دش (-) در ابتداي آنها نیست.
هر چند مود بایستی همیشه ابتدا و قبل از هر گزینه دیگري آورده شود.
به منظور لیست کردن محتواي آرشیو می توانیم از دستور زیر استفاده کنیم:
براي یک لیست با جزئیات بیشتر، می توانیم گزینه verbose) v) را استفاده کنیم:
خب حالا faraznetwork را در یک موقعیت جدید استخراج می کنیم.
این کار را ابتدا با ایجاد یک پوشه جدید با نام zip و سپس تغییر پوشه و استخراج فایل آرشیو انجام می دهیم:
یک رفتار جالب توجه دیگر tar شیوه نگهداري نام هاي مسیر آرشیوهاست.
نام هاي مسیر پیش فرض به جاي مسیرهاي مطلق، مسیرهاي نسبی است.
tar این کار را از طریق حذف اسلش هاي ابتدایی از نام مسیر هنگام ایجاد آرشیو انجام می دهد.
براي توضیح آرشیو خود را مجدد ایجاد می کنیم، این بار یک نام مسیر مطلق به آن اختصاص می دهیم:
به یاد بیاورید که zip/~ هنگام فشار دادن کلید Enter به آدرس home/rashvand/ بسط پیدا می کند در نتیجه ما یک نام مسیر مطلق دریافت می کنیم.
سپس این آرشیو را درست مانند قبل استخراج می کنیم:
در اینجا می بینیم که وقتی آرشیو دوم را استخراج کردیم،
پوشه home/rashvand/zip/ را نسبت به پوشه اي که در آن هستیم ایجاد می کند نه نسبت به پوشه home این شیوه کار آن کمی عجیب به نظر می رسد
ولی از این نظر که به آنها اجازه می دهد تا در موقعیت هاي اصلی خود استخراج شوند مفید خواهد بود.
یک مثال فرضی را در نظر بگیرید. تصور کنید می خواهیم پوشه home و محتویات آن را از یک سیستم به سیستمی دیگر منتقل کنیم
و به این منظور یک درایو USB داریم که براي انتقال می توانیم از آن استفاده کنیم.
بر روي سیستم مدرن لینوکس خود، درایو به صورت خودکار در مسیر media/ سوار شده است.
فرض کنید که دیسک یک با نام BigDisk دارد.
اکنون براي ایجاد آرشیو tar می توانیم از این دستور استفاده کنیم:
sudo tar cf /media/BigDisk/home.tar /home
پس از آنکه فایل tar نوشته شد، درایو USB را برداشته و به سیستم دیگر خود متصل می کنیم.
مجدد USB ما بر روي مسیر media/BigDisk/ سوار می شود.
براي استخراج آرشیو از این دستورها استفاده می کنیم:
/ cd
sudo tar xf /media/BigDisk/home.tar
نکته قابل توجه این است که ما بایستی ابتدا پوشه را به / تغییر دهیم تا استخراج نسبت به پوشه rootانجام شود.
چرا؟
به این دلیل که نام هاي مسیر در داخل آرشیو نسبی هستند.
زمانی که یک آرشیو را استخراج می کنید، ممکن است آنچه که استخراج یافته را محدود کنید.
براي مثال اگر بخواهیم یک فایل را از یک آرشیو استخراج کنیم می توانیم به این صورت انجام دهیم:
tar xf archive.tar pathname
با اضافه کردن نام مسیر به دستور، مطمئن می شویم که tar فقط فایل هاي اختصاص یافته را بازیابی می کند.
چندین نام مسیر را می توانیم اختصاص دهیم.
به یاد داشته باشید که نام مسیر بایستی نام مسیر کامل و نسبی باشد.
وقتی که نام هاي مسیر را اختصاص می دهید، به صورت معمول وایلد کاردها پشتیبانی نمی شوند.
هرچند نسخه tar GNU (که نسخه اي است که در بیشتر توزیع هاي لینوکس یافت می شود) گزینه هاي wildcards– را پشتیبانی می کند.
یک استفاده جالب دیگر از خروجی و ورودي استاندارد به همراه دستور tar مستلزم انتقال فایل ها بین سیستم ها بر روي شبکه است.
تصور کنید که دو ماشین در حال اجراي یونیکس مجهز به Tarو ssh داریم.
در چنین سناریویی می توانیم یک پوشه را از یک سیستم ریموت با نام (localhost) به سیستم لوکال خود انتقال دهیم.
در اینجا قادر به کپی یک پوشه با نام Documents از سیستم ریموت localhost (در این مثال لوکال هاست که همان سیستم خودمان هست سرور فرضی مورد نظر براي ssh می باشد) به یک پوشه با نام remote-linux بر روي سیستم لوکال بودیم.
چگونه این کار را انجام دادیم؟
ابتدا برنامه Tarرا با استفاده از ssh بر روي سیستم ریموت اجرا کردیم.
به یاد دارید که ssh شما را قادر می سازد تا یک دستور را به صورت ریموت بر روي یک کامپیوتر در شبکه اجرا کنید
و نتیجه را در ماشین محلی ببینید.
خروجی استاندارد ایجاد شده بر روي سیستم ریموت به ماشین محلی فرستاده شده و براي ما نمایش داده می شود.
ما می توانیم از این ویژگی با ایجاد یک آرشیو (مود c) و ارسال خروجی استاندارد، بجاي یک فایل (گزینه f با آرگومان – دش) سود برده،
در نتیجه آرشیو را در تانل رمزنگاري شده فراهم شده توسط ssh به ماشین محلی انتقال دهیم.
جهت مشاهده دوره های آموزشی بر روی این لینک کلیک نمایید.
جدیدترین اخبار مجموعه فراز نتورک را در این صفحه اجتماعی دنبال کنید.
نویسنده: موسی رشوند
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.