در مقایسه با ویندوز که بیشتر کاربران در هر صورت با آن آشنایی دارند، تهیه کردن نسخه پشتیبان در لینوکس دو تفاوت عمده دارد. یکی آنکه در ویندوز برخی از سیستمهاي فايلي حتی برای کاربر Administrator هم قفل شدهاند و به طور مستقیم امکان کپیکردن آنها هنگامی که سیستم عامل کنترل کامپیوتر را در دست گرفته وجود ندارد.
بههمين دليل، برای تهیه نسخه پشتیبان از درایو سیستم عاملدر ویندوز (مثلاً با برنامهای مانند Norton Ghost) باید کامپیوتر را دوبارهراهاندازي کنيد و فرآیند بوت و کنترل کامپیوتر را به برنامه پشتيبانگيري بسپارید. البته بهظاهر در نسخههای جدیدتر برخی از نرمافزارهای پشتيبانگيري تحت ویندوز، امکان خواندن تمام فایلها از درون سیستم عامل فراهم شدهاست که به شکلی غیرمستقیم انجاممیگیرد.
در هر حال در لینوکس چنین محدودیتی وجود ندارد و کاربری که سطح دسترسی Root را داشتهباشد، میتواند همه فایلها و شاخههای درون سیستم را بخواند، تغییر دهد یا پاک کند.
درحقيقت اگر کاربر Root باشید، با یک فرمان کوتاه میتوانید سیستم عامل در حال کار را مجبورکنيد خودش را پاک کند (البته، قصد ندارم آن فرمان را در اینجا فاش کنم)! بنابراین، برای تهیه کردن نسخه پشتیبان از «همه چیز» در لینوکس، و برای بازگرداندن سیستم عامل به وضعیت پیشین آن، با استفاده از یک نسخه پشتیبان به خارج شدن از محيط جاري سيستم عامل نيازي نيست.
نکته دیگر درباره لینوکس (و سیستمعاملهای یونیکسی دیگر) در مقایسه با ویندوز، ساختار هرمی دایرکتوریها است. در لینوکس یک شاخه Root وجود دارد که هر درایو، سختافزار و شاخه دیگری، در زیرشاخهای از آن قرار دارد. این معماری ساده، در مقایسه با ویندوز که درایوهای مختلف (مانند C و D) هر کدام شاخه جداگانه خود را دارند، بیآن که زیرشاخه یک پوشه یا شاخه کلیتر باشند، کار کردن با فایلها و پوشهها را آسانتر ميکند، زيرا با هر فایل یا شاخهای در حال کارکردن باشید، میدانید که آدرس آن در نهایت از شاخه Root شروع میشود (که با علامت / نشان دادهمیشود). اما در موارد کمشماری ممکن است این نوع معماری کمیگیجکننده باشد، از جمله هنگامی که میخواهید (برای نمونه) از تمام فایلهای روی هارددیسکخود نسخه پشتیبان تهیه کنيد.
فرض کنید، یک هاردیسک اکسترنال را به کامپیوترخود وصل کردهاید (به طور معمول، با اتصال USB) و میخواهید از تمام فایلها نسخه پشتیبان بگیرید. بهيقين براي شروع باید این قطعه خارجی را به سیستم عامل معرفيکنيد. معمولاً سیستمعاملهای امروزی خود این نوع درایوها را میشناسند و آنها را به اصطلاح Mount (نصب) میکنند.
در سیستم عاملهای خانواده لینوکس، برای دسترسی به این گونه درایوها، یک پوشه به درایو نصبشده اختصاص مییابد (که Mount Point خوانده میشود). اما این Mount Point نيز خود زیرشاخهای از Root است، بهعنوانمثال در سیستم اوبونتوی من، هارددیسک اکسترنال در زیرشاخهای به نام media/Buffalo/ قرار میگیرد. حالا اگر بخواهم از شاخه / یا حتی از زیرشاخه media/ نسخه پشتیبان بگیرم، خود درایو اکسترنال هم در زیرشاخهای از شاخه مبدأ قرار دارد و ممکن است یک حلقه نامتناهی از فرآیندهای کپیشدن فایلها ایجاد شود! چاره کار آساناست؛ هنگام اجرای برنامه پشتيبانگير، شاخه مقصد را از زیرشاخههای مبدأ جدا کنيم. یعنی در مثال بالا، به نرمافزار میگوییم که از همه چیز نسخه پشتیبان بگیر، به جز از شاخه media/Buffalo/ (که شاخه مقصد است).
اما تهیه نسخه پشتیبان و بازیابی سیستم به یک وضعیت قبلی، در لینوکس چگونه انجام میشود؟ درابتدا یک حالت بسیار ساده، اما کامل را مرورکرده، سپس برخی ابزارهای پیشرفتهتر را معرفیکرده و دو نمونه از این ابزارها را بررسی ميکنيم. در پایان باز هم یک حالت ساده دیگر را در نظر میگیریم، اما با ابزاری متفاوت و احتمالاً خطرناک!
سادهترین حالت در یک سناریوی تهیه نسخه پشتیبان، آن است که روی یک کامپیوتر سیستم عاملی نصب است (در این مورد، لینوکس) و احیاناً به جز درایو سیستم عامل، درایوهای دیگری هم روی هارددیسک(های) سیستم وجود دارند و میخواهیم از تمام دادههای موجود روی درایو سیستم عامل و درایوهای دیگر، نسخه پشتیبان تهیه کنيم. به زبان ساختار فایلی لینوکس، میتوان گفت میخواهیم از شاخه Root و همه زیرشاخههای آن نسخه پشتیبان تهیه کنیم.
فرض کنیم یک هارد اکسترنال به کامپیوتر وصل کردهایم که در شاخه media/usbdevice/ نصب شدهاست. سادهترین کار ممکن در این حالت این است که در خط فرمان (ترمینال) سیستم از دستوری مانند Tar که برای ساختن و کارکردن با آرشیوهای فشرده فایلی با فرمتهای مختلف به کار میرود، استفاده کنيم. اما چون میخواهیم به تمام سيستمهاي فايلي دسترسی داشتهباشیم (از جمله به فایلهایی که فقط کاربر Root اجازه دسترسی به آنها را دارد)، ابتدا باید در خط فرمان به سطح دسترسی Root برویم.
در توزیعهایی مانند OpenSuse یا Fedora این کار را میتوان با تایپکردن دستور su و سپس واردکردن رمزعبور کاربر Root انجام داد. در سیستمهای خانواده اوبونتو کاربر Root به طور پیشفرض غیرفعال است، پس باید به کمک دستور Sudo به سطح دسترسی Root دست یافت. یک راه ساده این است که دستور su را با sudo اجرا کنيم، یعنی در ترمینال تایپ کنیم:
sudo su
سپس رمزعبور کاربر حاضر را وارد کنيم. بعد از وارد شدن به سطح اجازه کاربر su (سرنام Super User)، سادهتر آن است که یکراست به شاخه Root برویم:
cd /
درادامه میخواهیم یک فایلفشرده از همه محتویات هارددیسکبسازیم و آن را روی هارد اکسترنال در شاخه media/usbdevice/ قرار دهیم. بهتر است پیش از انجام این کار مطمئن شویم هیچ درایو اضافهای (جز درایو مقصد) به سیستم متصل نیست. اگر برای نمونه یک DVD در درایو نوری کامپیوتر باشد، محتویات آن نیز در این شیوه در فایل پشتیبان حاضرخواهدبود (که در مرحله استفاده احتمالی از این فایل برای بازآوری سیستم، یک عامل مزاحم خواهدبود)، مگر آن که محل Mount شدن آن را به طور دستی جدا کنیم (به شیوهای که در زیر خواهیمدید). برای این منظور کافی است در خط فرمان تایپ کنیم:
tar cvpzf /media/usbdevice/backup.tgz --exclude=/media/usbdevice /
Tar به طور مشخص، دستوری است که از آن استفاده میکنیم. cvpzf گزینههایی هستند که با Tar به کار میبریم تا به آن بگوییم یک فایل آرشیو ایجاد کن، اجازههای دسترسی به فایلها و شاخهها را به همان شکل حاضر حفظکن و از gzip برای فشردهکردن فایل آرشیو استفاده کن. میتوان به جای gzip از Bzip2 استفاده کرد (با جایگزینکردن z با j در cvpzf) و فایل فشردهتری با فرمت tar.bz2 ساخت که البته ساختنآن نیز زمان بیشتری به طول میانجامد.
سپس آدرس و اسم کامل فایل پشتيبان را میگوییم (backup.tgz روی درایو اکسترنال)، بعد از آن مشخص میکنيم که خود این شاخه باید مستثني شود. میتوان گزینه= exclude-- را به تعداد دلخواه و برای مستثني کردن تعداد دلخواهی از فایلها و دایرکتوریها به کار برد.
آخرین جزء این فرمان هم به سادگی یک علامت/ است که آدرس دایرکتوری Root باشد. باتوجه به بزرگی یا کوچکی حجم مجموع فایلها، فرآیند ساخت فایل پشتيبان ممکن است مدت کم یا زیادی به طول انجامد. اما فرآیند ساخت فایل پشتیبان به همین سادگی است و درون محیط خود سیستمعامل انجام میشود.
حالا فرض کنیم که میخواهیم سیستم عامل و تمام فایلهای دیگر موجود در هارددیسک را با استفاده از این فایل پشتیبان به حالت اوليهاش بازگردانیم. کافی است باز هم با سطح دسترسی Root در خط فرمان تایپ کنیم.
اما پیش از اجرای این دستور مطمئن شوید که تمام مراحل را مطالعه کردهاید و نتیجه احتمالی آن را به خوبی درک میکنيد، زيرا دستور زیر، فایلهای موجود در سیستم را بازنویسی میکند و اگر (برای نمونه) یک فایل متنی را تغییر دادهباشید و نسخه تازهتر آن حاوی اطلاعات مهمی افزون بر نسخه پشتيبان باشد، در این فرآیند نسخه تازه را از دست خواهید داد. مطمئن شدید؟ دستوری که به کار میبریم، این است:
tar xvpfz /media/usbdevice/backup.tgz -C /
یا اگر از فرمت bz2 برای ساخت فایل پشتیبان استفاده کردهاید، دستور زیر را تایپ کنيد:
tar xvpfj /media/usbdevice/backup.tar.bz2 -C /
این فرآیند هم مدتی طول خواهدکشید و در پایان آن، سیستم به حالت هنگام پشتيبان گرفتن بازخواهدگشت. به همین سادگی. تنها لازم است اگر برخی دایرکتوریها را هنگام ساخت فایل پشتيبان مستثني کردهباشیم، آنها را بعد از بازآوری سیستم دوباره ایجاد کنيم.
در اين ميان، يک نکته قابل توجه ايناست که اگر از این فرآیند برای منتقلکردن یک پیکربندی کامل سیستم به یک هارددیسک جدید استفاده کنيم یا به هر شکل Boot Manager را (که معمولاً Grub است) دچار اختلال کردهباشیم (مثلاً با نصبکردن ویندوز)، در مرحله آخر لازم است Grub را هم ترمیم کنيم که راهنماهای زیادی برای انجام دادن این کار نوشته شدهاند و در اینجا به آن نمیپردازیم.
ابزارهای پیشرفتهتر
تا همین جا هم قدرت روشی که مرور کردیم به سادگی با بسیاری از نرمافزارهای تجاری قابل مقایسه است، به ویژه آن که در مقایسه با سناریوی ویندوزی، نیازی به دوبارهراهاندازي کردن سيستم در هیچ مرحلهای وجود ندارد. اما به دلایل بسیاری ممکن است بخواهیم پشتيبان گرفتن را به شکل مؤثرتر و منعطفتری انجام دهیم و چندین ابزار لینوکسی مختلف نیز برای این منظور وجود دارند. بیایید به چند نمونه از این ابزارها نگاهی بیاندازیم.
Rsync
Rsync یک برنامه بسیار سودمند برای پشتيبان گرفتن و نیز برای بازیابی فایلها از نسخه پشتيبان است. برنامه Rsync مبتنی بر الگوریتمی به همین نام است و همانگونه که از نامش پیدا است، شیوه کار آن مبتنی بر منطبقکردن (Synchronization) یک دایرکتوری مقصد با دایرکتوری منبع است. قدرت Rsync در آن است که با استفاده از کدگذاری دادهها در مواقع لازم، تبادل داده میان منبع و مقصد را به میزان زیادی کاهش میدهد.
Rsync به سادگی دو دایرکتوری دادهشده را با هم هماهنگ میکند (به شکل یکطرفه) و این فرآیند را میتوان هنگام تهیه نسخه پشتیبان در یک جهت و در زمان بازآوری، در جهت مخالف مورد استفاده قرار داد. يکي ديگر از مزیتهاي استفاده از Rsync این است که به طور پیشفرض فایلها را نه به شکل یک بسته واحد و فشرده، بلکه با همان ساختار فایل و دایرکتوری منبع مینویسد (اگرچه امکان ساختن فایلهای آرشیوی فشرده را نیز دارد) و به این ترتیب میتوان نسخه پشتیبان را در هر زمانی به طور مستقل مورد استفاده قرارداد. برای تهیه پشتيبانهای دورهای نیز لازم نیست هر بار تمام دادهها را منتقل کرد، بلکه Rsync دایرکتوریهای منبع و مقصد را میپوید و فقط فایلها و دایرکتوریهای تازه و فایلهایی را که تغییر دادهاند به مقصد مینویسد و بقیه را بیتغییر میگذارد.
|