باکولا یک شبکه متن-باز از راه‌حل‌های پشتیبانی‌ است که امکان ایجاد فایل‌های پشتیبان و اجرای عملیات‌های بازیابی داده روی سیستم‌های رایانه‌ای را فراهم ساخته است. این سیستم کاملاً انعطاف‌پذیر و پایدار است. با این که پیکربندی آن شاید کمی دشوار باشد؛ اما برای تنظیم پشتیبانی در بیشتر موقعیت‌ها گزینه‌ای مناسب به حساب می‌آید. سیستم پشتیبان‌گیری در اغلب زیرساخت‌های سرور جزئی مهم محسوب می‌شود، چون بازگرداندن داده‌های از دست رفته در اغلب موارد بخشی حیاتی از طرح‌های بازیابی در هنگام بروز فجایع مختلف است.

در این راهنما شیوه نصب و پیکربندی اجزای سرور باکولا را روی سرور اوبونتو 14.04 به شما آموزش خواهیم داد. در این آموزش باکولا را برای اجرای یک وظیفه پشتیبان‌گیری هفتگی پیکربندی می‌کنیم که فایل‌های پشتیبان را به صورت محلی تهیه می‌کند. منظور از پشتیبان‌های محلی، ذخیره فایل‌ها روی خود رایانه میزبان است. البته این روش استفاده از باکولا چندان روش متداولی نیست؛ اما یک نقطه شروع مناسب برای ایجاد فایل‌های پشتیبان از سرورهای دیگر یعنی کلاینت‌ها به حساب می‌آید. در بخش‌های دیگر از این سری راهنما به بررسی شیوه تهیه فایل‌های پشتیبان از سرورهای دیگر ریموت با نصب و پیکربندی Bacula client و پیکربندی bacula server می‌پردازیم.

پیش‌نیازها

شما می‌بایست یک سرور اوبونتو 14.04 با دسترسی sudo داشته باشید. همچنین سرور باید فضای دیسک کافی برای همه پشتیبان‌هایی که قصد دارید همزمان نگه‌داری کنید داشته باشد.

در این راهنما باکولا را چنان پیکربندی خواهیم کرد که از FQDN خصوصی سرورهای ما به صورت bacula.private.example.com استفاده کند. اگر DNS مناسبی ندارید، می‌توانید از آدرس‌های IP نیز استفاده کنید. اگر هیچ شبکه خصوصی بین سرورها وجود ندارد، باید به جای آدرس IP های خصوصی از آدرس‌هایی که سرورها می‌توانند دسترسی داشته باشند، یعنی آدرس IP عمومی یا تونل VPN استفاده کنید. در ابتدا نگاهی به اجزای باکولا داریم.

مروری بر اجزای Bacula

با این که باکولا از چندین جزء نرم‌افزاری تشکیل یافته است؛ اما از روش پشتیبان‌گیری سرور-کلاینت بهره می‌گیرد. ما در این راهنما برای ساده‌تر شدن موضوع به جای این که به اجزای مختلف باکولا بپردازیم، روی backup server و backup clients تمرکز می‌کنیم. با این حال داشتن اطلاعاتی کلی از اجزای باکولا همچنان حائز اهمیت است و از این رو در ادامه نگاهی به مهم‌ترین اجزای باکولا خواهیم داشت:

یک سرور باکولا که در این راهنما به صورت سرور پشتیبان یا سرور پشتیبان‌گیری نیز نامیده می‌شود اجزای زیر را دارد:

  • (Bacula Director (DIR – نرم‌افزاری که عملیات‌های پشتیبان‌گیری و بازیابی انجام یافته از سوی Daemon های فایل و ذخیره‌سازی را کنترل می‌کند.
  • (Storage Daemon (SD – نرم‌افزاری است که کار خواندن و نوشتن را روی دستگاه‌های ذخیره‌سازی مورد استفاده برای پشتیبان‌ها انجام می‌دهد.
  • Catalog – سرویس‌هایی هستند که در یک پایگاه داده از فایل‌هایی که پشتیبان‌گیری شده‌اند نگهداری می‌کنند. این پایگاه داده به صورت یک پایگاه داده SQL مثلاً MySQL یا PostgreSQL نگهداری می‌شود.
  • Bacula Console – یک رابط خط فرمان است که به مدیر پشتیبان امکان تعامل با باکولا و کنترل Bacula Director را می‌دهد.

توجه کنید که لازم نیست اجزای سرور باکولا همگی روی یک سرور باشند؛ اما می‌بایست با همدیگر همکاری کنند تا کارکرد سرور پشتیبان را ارائه دهند.

کلاینت باکولا یعنی سروری که پشتیبان‌گیری خواهد شد، کامپوننت (File Daemon (FD را اجرا می‌کند. File Daemon نرم‌افزاری است که به سرور باکولا (به طور خاص دایرکتور) اجازه می‌دهد به داده‌هایی که قرار است پشتیبان‌گیری شوند دسترسی یابد. این سرورها را «کلاینت‌های پشتیبان» یا صرفاً «کلاینت» نیز می‌نامیم.

همان طور که در مقدمه اشاره کردیم ما قصد داریم سرور پشتیبان را طوری پیکربندی کنیم که یک پشتیبان روی filesystem خود تهیه کند. این بدان معنی است که سرور پشتیبان، خود یک کلاینت پشتیبان نیز محسوب می‌شود و به اجرای File Daemon می‌پردازد.

نصب MySQL

باکولا از یک پایگاه داده SQL مانند MySQL یا PostgreSQL برای مدیریت کاتالوگ پشتیبان‌ها استفاده می‌کند. ما در این راهنما از MySQL استفاده می‌کنیم. ابتدا apt-get را به‌روزرسانی می‌کنیم:

سپس سرور MySQL را با apt-get نصب می‌کنیم:

از شما خواسته خواهد شد که رمز عبور کاربر مدیر پایگاه داده MySQL به نام root را وارد کنید. یک رمز عبور وارد کرده و آن را تأیید کنید. این رمز عبور را به خاطر بسپارید، زیرا در ادامه فرایند نصب باکولا لازم خواهد بود.

نصب باکولا

سرور باکولا و اجزای کلاینت را با استفاده از apt-get نصب کنید:

از شما خواسته می‌شود که برخی اطلاعات مورد نیاز برای پیکربندی Postfix که باکولا استفاده می‌کند را وارد نمایید:

  • نوع عمومی پیکربندی ایمیل: گزینه «Internet Site» را انتخاب کنید.
  • نام ایمیل سیستم: FQDN یا نام میزبانی سرور خود را وارد کنید.

سپس از شما خواسته می‌شود اطلاعاتی که برای راه‌اندازی پایگاه داده باکولا لازم است را وارد کنید:

  • Configure database for bacula-director-mysql with dbconfig-common؟ گزینه «Yes» را انتخاب کنید.
  • Password of the database’s administrative user: رمز عبور root را برای MySQL وارد کنید (در زمان نصب MySQL تعیین کردید.)
  • MySQL application password for bacula-director-mysql: یک رمز عبور جدید وارد کرده و آن را تأیید کنید یا این که آن را خالی بگذارید تا یک رمز عبور تصادفی ایجاد شود.

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

اجزای سرور باکولا (و کلاینت) اینک نصب شده‌اند. در ادامه دایرکتوری‌های پشتیبان و بازیابی را ایجاد می‌کنیم.

ایجاد دایرکتوری‌های پشتیبان و بازیابی

باکولا به یک دایرکتوری backup برای ذخیره‌سازی فایل‌های آرشیو پشتیبان و دایرکتوری restore برای ذخیره‌سازی فایل‌های بازیابی شده نیاز دارد. اگر سیستم شما چند پارتیشن داشته باشد، اطمینان حاصل کنید که دایرکتوری‌ها در پارتیشن‌هایی ایجاد شده باشند که فضای کافی دارند. در ادامه دایرکتوری‌های جدیدی برای هر دو این موارد ایجاد می‌کنیم:

ما می‌بایست مجوزهای فایل را چنان تغییر دهیم که تنها پروسه باکولا (و یک سوپریوزر) بتواند به این فایل‌ها دسترسی داشته باشد:

اینک آماده هستیم که Bacula Director را پیکربندی کنیم. باکولا چند جزء دارد که باید به طور مستقل از هم پیکربندی شوند تا عملکرد صحیحی داشته باشند. فایل‌های پیکربندی را می‌توانید در دایرکتوری etc/bacula/ بیابید.

کار خود را با Bacula Director آغاز می‌کنیم. فایل پیکربندی Bacula Director را در ویرایشگر متنی مورد علاقه خود باز کنید. ما از vi استفاده می‌کنیم:

پیکربندی job های محلی

یک job باکولا برای اجرای اقدامات پشتیبان‌گیری و بازیابی استفاده می‌شود. منابع job جزییاتی که یک job خاص انجام می‌دهد را تعیین می‌کنند که شامل نام کلاینت، FileSet برای پشتیبان‌گیری یا بازیابی و کارهایی از این دست است. در ادامه job-هایی را پیکربندی می‌کنیم که برای اجرای پشتیبان‌گیری filesystem محلی استفاده می‌شوند. در پیکربندی Director منبع job ی با نام «BackupClient1» را بیابید. مقدار Name را به «BackupLocalFiles» تغییر دهید تا به صورت زیر درآید:

سپس منبع jobی را که «RestoreFiles» نام دارد بیابید. در این job باید دو چیز را تغییر دهید: مقدار Name را به «RestoreLocalFile» تغییر دهید و مقدار Where را به «bacula/restore/» عوض کنید. در این صورت به شکل زیر درمی‌آید:

بدین ترتیب job با نام RestoreLocalFile پیکربندی می‌شود تا فایل‌ها به دایرکتوری bacula/restore/ که قبلاً ایجاد کردیم، بازیابی شوند.

پیکربندی File Set

FileSet باکولا مجموعه‌ای از فایل‌ها یا دایرکتوری‌ها برای اجرای فایل‌ها از گزیده‌ای از پشتیبان‌ها تعریف می‌کند و از سوی job ها استفاده می‌شوند.

منبع FileSet با نام «Full Set» را پیدا کنید. در این بخش سه تغییر ایجاد می‌کنیم:

  • گزینه استفاده از gzip برای فشرده‌سازی پشتیبان‌ها
  • تغییر فایل include از usr/sbin/ به / و
  • تغییر فایل اجرایی دوم به bacula/ با حذف کامنت‌ها.

بدین ترتیب فایل به صورت زیر درمی‌آید:

این تغییراتی است که باید در FileSet به نام «Full Set» ایجاد می‌کردیم. ابتدا فشرده‌سازی gzip را هنگام ایجاد فایل‌های پشتیبان فعال کردیم. دوم مسیر / را include می‌کنیم یعنی پارتیشن ریشه‌ای که باید پشتیبان‌گیری شود. سوم، bacula/ را اجرا می‌کنیم زیرا نمی‌خواهیم از پشتیبان‌های باکولای خود به صورت تکراری فایل‌های پشتیبان یا بازیابی ایجاد کنیم.

توجه کنید که اگر پارتیشن‌هایی که نصب شده‌اند درون / باشند و بخواهید آن‌ها را در FileSet بگنجانید باید رکوردهای فایل اضافی برای هر کدام از آن‌ها اضافه کنید.

به خاطر داشته باشید که اگر همیشه از FileSet های گسترده مانند «Full Set» در job های پشتیبان خود استفاده کنید، پشتیبان‌های شما نسبت به زمانی که به صورت گزیده عمل می‌کنید به فضای دیسک بیشتری نیاز خواهید داشت. برای نمونه اگر طرح بازیابی هوشمندانه‌ای داشته باشید که جزییات نصب بسته‌های نرم‌افزاری و قرار دادن فایل‌های بازیابی شده در مکان‌های صحیح در آن ذکر شده باشند در این صورت می‌توانید از فایل‌های پیکربندی سفارشی و پایگاه‌های داده‌ای که برای نیازهای شما کفایت می‌کند استفاده کنید و در این حالت به فضای دیسک بسیار کمتری نیاز خواهید داشت.

پیکربندی اتصال Daemon Storage

در فایل پیکربندی باکولا دایرکتور، منبع Storage برای تعریف Daemon Storage استفاده می‌شود که دایرکتور باید به آن وصل شود. ما Daemon Storage واقعی را کمی بعدتر پیکربندی می‌کنیم. منبع Storage را یافته و مقدار Address که به صورت localhost است را FQDN خصوصی (یا آدرس IP خصوصی) سرور پشتیبانتان جایگزین کنید. فایل به صورت زیر در خواهد آمد:

این تغییر ضروری است چون قصد داریم Storage Daemon را طوری پیکربندی کنیم که به رابط شبکه خصوصی گوش دهد تا کلاینت‌های ریموت بتوانند به آن وصل شوند.

پیکربندی Pool

منبع Pool مجموع ذخیره‌سازی مورد استفاده باکولا برای نوشتن فایل‌های پشتیبان را تعریف می‌کند. ما از این فایل‌ها به عنوان درایوهای ذخیره‌سازی خود استفاده می‌کنیم، بدین ترتیب کافی است برچسب آن‌ها را به‌روزرسانی کنیم تا فایل‌های پشتیبان محلی دارای برچسب صحیح باشند.

منبع Pool دارای نام «File» را یافته و خطی زیر آن اضافه کنید که یک قالب برای برچسب (label) را تعیین می‌کند. در نهایت فایل باید به صورت زیر باشد:

فایل را ذخیره کرده و خارج شوید. بدین ترتیب مراحل پیکربندی باکولا دایرکتور پایان می‌یابد.

بررسی پیکربندی دایرکتور

در ادامه بررسی می‌کنیم که هیچ خطای ساختار در فایل پیکربندی Director وجود نداشته باشد:

اگر هیچ پیام خطایی در bacula-dir.conf وجود نداشته باشد، مشخص می‌شود که هیچ خطای ساختاری ندارد. در ادامه Storage Daemon را پیکربندی خواهیم کرد

پیکربندی Storage Daemon

سرور باکولای ما تقریباً آماده است؛ اما باید Storage Daemon را نیز پیکربندی کنیم تا باکولا بداند کجا باید فایل‌های پشتیبان را ذخیره سازد. فایل پیکربندی Storage Daemon را در ویرایشگر متنی باز کنید:

پیکربندی منبع Storage

منبع Storage را پیدا کنید. این منبع تعریف می‌کند که پروسه Storage باید به کدام اتصال‌ها گوش دهد. پارامتر SDAddress را اضافه کنید و مقدار آن را به برابر با FQDN خصوصی (یا آدرس IP خصوصی) سرور پشتیبان خود قرار دهید:

پیکربندی دستگاه Storage

سپس منبع دستگاهی که «FileStorage» نام دارد بیابید و مقدار Archive Device را برای مطابقت با دایرکتوری پشتیبان‌ها تغییر دهید:

فایل را ذخیره کرده و خارج شوید

تأیید پیکربندی Storage Daemon

در ادامه بررسی می‌کنیم که هیچ خطای ساختاری در فایل پیکربندی Storage Daemon وجود ندارد:

اگر هیچ پیام خطایی وجود نداشته باشد، فایل bacula-sd.conf نیز هیچ خطای ساختاری ندارد. بدین ترتیب پیکربندی باکولا به پایان می‌رسد. اینک آماده هستیم که اجزای سرور باکولا را ری‌استارت کنیم.

ری‌استارت Bacula Director و Storage Daemon

برای این که تغییرات پیکربندی که انجام یافتند اعمال شوند باید Bacula Director و Storage Daemon با دستورهای زیر ری‌استارت شوند:

اکنون که سرورهای ری‌استارت شدند، می‌توانیم با اجرای یک job پشتیبان‌گیری آن‌ها را تست کنیم.

تست job پشتیبان‌گیری

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

با این کار به اعلان کنسول باکولا می‌روید که با اعلان (*) مشخص شده است.

ایجاد یک برچسب

کار خود را با صادر کردن یک دستور label آغاز می‌کنیم:

از شما خواسته می‌شود که نام درایو را وارد کنید. هر نامی که دوست دارید وارد نمایید:

سپس آن pool که از سوی پشتیبان باید استفاده شود را تعیین کنید. ما با وارد کردن عدد 2، از pool به نام «File» که قبلاً پیکربندی کرده‌ایم استفاده می‌کنیم:

اجرای دستی job پشتیبان

باکولا اینک می‌داند که ما می‌خواهیم پشتیبان خود را چگونه بنویسیم. بنابراین اکنون می‌توانیم پشتیبان خود را اجرا کنیم تا درستی آن را بررسی نماییم:

از شما خواسته می‌شود که انتخاب کنید کدام job اجرا شود. ما می‌خواهیم job دارای نام «BackupLocalFiles» اجرا شود و از این رو مقدار 1 را وارد می‌کنیم:

در اعلان تأیید «Run Backup job»، جزییات را بررسی کنید و سپس با وارد کردن گزینه «yes» اجازه اجرا شدن job را بدهید:

بررسی پیام‌ها و وضعیت‌ها

پس از اجرای یک job، باکولا به شما می‌گوید که پیام‌هایی دارید. این پیام‌ها از سوی job های در حال اجرا تولید می‌شوند. با وارد کردن دستور زیر می‌توانید پیام‌ها را بررسی کنید:

این پیام باید به صورت زیر باشد: «No prior Full backup Job record found» و این که job مورد نظر آغاز شده است. اگر هر گونه خطایی وجود داشته باشد یا چیزی نادرست باشد، در این پیام سرنخی ارائه می‌شود که چرا job اجرا نشده است.

روش دیگر برای مشاهده وضعیت job این است که وضعیت Director را بررسی کنید. بدین منظور باید دستور زیر را در اعلان کنسول وارد کنید:

اگر همه چیز به درستی کار کند، در این بخش می‌بینید که job در حال اجرا است و خروجی چیزی شبیه زیر خواهد بود:

زمانی که job شما پایان یافت، به بخش «Terminated Jobs» گزارش وضعیت منتقل می‌شود و بخش فوق مانند زیر خواهد بود:

وضعیت «OK» نشان می‌دهد که job پشتیبانی بدون هیچ گونه اشکالی اجرا می‌شود. اینک شما موفق شده‌اید از مجموعه فایل «Full Set» سرور باکولا پشتیبان‌گیری نمایید. مرحله بعدی، تست job بازیابی است.

تست job بازیابی

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

اجرای job برای بازیابی همه فایل‌ها (Restor All)

برای این که روش کار را نشان دهیم همه فایل‌هایی که در آخرین بار پشتیبان گرفته‌ایم، بازیابی می‌کنیم:

در ادامه یک منوی انتخاب با گزینه‌های بسیار ظاهر می‌شود که برای شناسایی این که کدام مجموعه پشتیبان باید بازیابی شود استفاده می‌شود. از آنجا که ما تنها یک پشتیبان داریم گزینه «Select the most recent backup» را انتخاب می‌کنیم که عدد 5 است:

از آنجایی که تنها یک کلاینت وجود دارد که همان سرور باکولا است، بنابراین به طور خودکار انتخاب می‌شود. در اعلان بعدی از شما خواسته می‌شود تعین کنید کدام مجموعه فایل (FileSet) باید استفاده شود. گزینه «Full Set» را انتخاب کنید که عدد 2 است:

بدین ترتیب یک درخت فایل مجازی نمایش می‌یابد که ساختار کلی دایرکتوری که پشتیبان‌گیری شده است را نشان می‌دهد. این رابط شبیه shell به ما امکان می‌دهد که دستورات ساده‌ای برای انتخاب یا عدم انتخاب فایل‌هایی که باید بازیابی شوند داشته باشیم.

از آنجا که تعیین کرده‌ایم می‌خواهیم «restore all» شود، همه فایل‌های پشتیبان‌گیری شده برای بازیابی انتخاب شده‌اند. فایل‌های انتخاب شده با یک کاراکتر (*) نمایش می‌یابند.

اگر می‌خواهید این انتخاب را تغییر دهید می‌توانید وارد دایرکتوری‌ها شوید و با دستورهای ls و cd فایل‌ها را لیست کنید، فایل‌هایی که باید بازیابی شوند را علامت‌گذاری کنید یا آن‌ها را از حالت انتخاب خارج سازید. فهرست کامل دستورهای ممکن با وارد کردن help در کنسول قابل مشاهده است. زمانی که کار انتخاب فایل‌ها برای بازیابی به پایان رسید می‌توانید با وارد کردن دستور زیر به کار خود ادامه دهید:

تأیید کنید که می‌خواهید job بازیابی اجرا شود:

بررسی پیام‌ها و وضعیت‌ها

همانند job پشتیبان‌گیری در این مورد نیز می‌توان پیام‌ها و وضعیت Director را پس از اجرای job بازیابی مشاهده کرد. با وارد دستور زیر می‌توانید پیام‌ها را ببینید:

در این مرحله باید پیامی وجود داشته باشد که اعلام می‌کند job بازیابی آغاز شده است یا پیامی باشد که نشان دهند این job با وضعیت «Restore OK» خاتمه یافته است. اگر هر گونه خطایی وجود داشته باشد به شما سرنخی ارائه می‌شود که چرا job اجرا نشده است. در این مورد نیز بررسی وضعیت Director روشی عالی برای مشاهده وضعیت job بازیابی شده است:

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

تأیید بازیابی

برای تأیید این که job بازیابی در عمل فایل‌های منتخب را بازیابی کرده است، می‌توانید نگاهی به دایرکتوری /bacula/restore داشته باشید که در job «RestoreLocalFiles» در پیکربندی Director تعیین کردیم:

در این دایرکتوری باید کپی‌هایی از فایل‌ها در سیستم فایل ریشه ببینید. فایل‌ها و دایرکتوری‌هایی که در بخش «Exclude» job «RestoreLocalFiles» لیست شده‌اند، از این فهرست استثنا هستند. اگر بخواهید داده‌هایی که از دست رفته‌اند را بازیابی کنید، می‌توانید فایل‌های بازیابی شده را به موقعیت‌های مناسبشان کپی کنید.

حذف فایل‌های بازیابی شده

ممکن است بخواهید فایل‌های بازیابی شده را حذف کنید تا فضای دیسک آزاد شود. بدین منظور باید دستور زیر را وارد کنید:

توجه کنید که این دستور rm را باید به عنوان کاربر root وارد کنید، چون بسیاری از فایل‌های بازیابی شده در مالکیت root هستند.

سخن پایانی

اینک شما یک سرور پشتیبان‌گیری اولیه باکولا دارید که می‌توانید به وسیله آن از سیستم فایل محلی پشتیبان گرفته و آن را بازیابی کنید. در مراحل بعدی سرورهای دیگری به عنوان کلاینت به این مجموعه اضافه می‌کنیم تا بتوانید در صورت از دست رفتن داده‌های آن‌ها، این داده‌ها را نیز بازیابی کنید.

اگر این نوشته مورد توجه شما قرار گرفته است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

میثم لطفی (+)

«میثم لطفی» دانش‌آموخته ریاضیات و شیفته فناوری به خصوص در حوزه رایانه است. وی در حال حاضر علاوه بر پیگیری علاقه‌مندی‌هایش در رشته‌های برنامه‌نویسی، کپی‌رایتینگ و محتوای چندرسانه‌ای، در زمینه نگارش مقالاتی با محوریت نرم‌افزار نیز با مجله فرادرس همکاری دارد.

آیا این مطلب برای شما مفید بود؟

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *