پشتیبان گیری از سرور اوبونتو ۱۴.۴ با باکولا (Bacula) – به زبان ساده
در این راهنما به شما نشان میدهیم که چگونه میتوانید از یک سرور ریموت اوبونتو 14.04 از طریق اتصال شبکه، پشتیبان تهیه کنید. این فرایند شامل نصب و پیکربندی نرمافزار کلاینت باکولا (Bacula) روی میزبان ریموت و ایجاد برخی تغییرات در پیکربندی سرور باکولای موجود است.
پیشنیازها
در این راهنما فرض میکنیم که یک سرور دارید که اجزای Bacula server روی آن در حال اجرا هستند. اگر چنین سروری را پیکربندی نکردهاید، میتوانید از مطلب «نصب سرور باکولا (Bacula) روی اوبونتو» بدین منظور استفاده کنید.
همچنین فرض میکنیم که از رابطهای شبکه خصوصی برای پشتیبان گرفتن از ارتباطهای بین کلاینت-سرور استفاده میکنید. ما در این مقاله از FQDN خصوصی سرورها (یعنی FQDN که به آدرس IP خصوصی سرورها اشاره میکند) استفاده میکنیم. همچنین برای اشاره به میزبان ریموت که قرار است پشتیبانگیری شود از ClientHost یا میزبان کلاینت یا صرفاً کلاینت استفاده میکنیم.ابتدا با ایجاد برخی تغییرات سریع در پیکربندی سرور باکولا کار خود را آغاز میکنیم.
سازماندهی فایل پیکربندی Bacula Director (سرور)
اقدامات زیر را روی سرور باکولا انجام دهید. وقتی سرور باکولا را راهاندازی میکنید، ممکن است متوجه شده باشید که فایلهای پیکربندی به طرز آزاردهندهای طولانی هستند. سعی میکنیم فایل پیکربندی باکولا دایرکتور را اندکی سازمان ببخشیم و از این رو از فایلهای جداگانهای برای افزودن پیکربندی جدید برای job، FileSet و pool ها بهره میگیریم.
در ادامه یک دایرکتوری ایجاد میکنیم تا به سازماندهی فایلهای پیکربندی Bacula کمک کنیم:
sudo mkdir /etc/bacula/conf.d
سپس فایل پیکربندی باکولا دایرکتور را باز میکنیم:
sudo vi /etc/bacula/bacula-dir.conf
در انتهای فایل خط زیر را اضافه میکنیم:
@|"find /etc/bacula/conf.d -name '*.conf' -type f -exec echo @{} \;"
فایل را ذخیره کرده و خارج شوید. این خط باعث میشود که Director در دایرکتوری etc/bacula/conf.d/ به دنبال فایلهای پیکربندی دیگر که باید الحاق شوند بگردد. یعنی هر فایل conf. که آنجا اضافه میشود به عنوان بخشی از پیکربندی بارگذاری میشود.
افزودن pool برای RemoteFile
میخواهیم یک pool دیگر برای پیکربندی Bacula Director اضافه کنیم که از پیکربندی job های پشتیبانگیری ریموت ما استفاده میکند. فایل conf.d/pools.conf را باز کنید:
sudo vi /etc/bacula/conf.d/pools.conf
منبع pool زیر را اضافه کنید:
Pool { Name = RemoteFile Pool Type = Backup Label Format = Remote- Recycle = yes # Bacula can automatically recycle Volumes AutoPrune = yes # Prune expired volumes Volume Retention = 365 days # one year Maximum Volume Bytes = 50G # Limit Volume size to something reasonable Maximum Volumes = 100 # Limit number of Volumes in Pool }
فایل را ذخیره کرده و ببندید. این فایل یک pool به نام «RemoteFile» تعریف میکند که از سوی job پشتیان گیری که بعدتر ایجاد خواهیم کرد مورد استفاده قرار میگیرد. شما میتوانید هر تغییری که میخواهید را در پارامترها اعمال کنید تا با نیازهای شما هماهنگ باشد.
هنوز لازم نیست Bacula Director را ریاستارت کنیم؛ اما باید صحت پیکربندی را تأیید کنیم تا مطمئن شویم که هیچ خطایی باقی نمانده است:
sudo bacula-dir -tc /etc/bacula/bacula-dir.conf
اگر خطایی وجود نداشت، آماده هستیم که به ادامه راهاندازی کلاینت باکولا بپردازیم.
نصب و پیکربندی کلاینت Bacula
این بخش را در مورد هر یک از کلاینتهای میزبان که میخواهید به مجموعه Bacula خود اضافه کنید باید انجام دهید. ابتدا apt-get را بهروزرسانی کنید:
sudo apt-get update
سپس بسته bacula-client را نصب کنید:
sudo apt-get install bacula-client
دستور فوق، (Bacula File Daemon (FD را نصب میکند که غالباً به نام کلاینت باکولا نامیده میشود.
پیکربندی کلاینت
پیش از پیکربندی کردن Daemon فایل در کلاینت، باید با اطلاعات زیر که در بخشهای باقی مانده مقاله به تناوب مورد اشاره قرار میگیرند آشنا باشید:
- Client hostname – در این مثال از «ClientHost» استفاده میشود.
- Client Private FQDN – منظور از این عبارت FQDN خصوصی کلاینت است که در این مقاله از مقدار «client_private_FQDN» استفاده میشود. برای نمونه: clienthost.private.example.com
- Bacula Server hostname – در این مثال از «BackupServer» استفاده میشود.
ممکن است در کاربرد شما، مقادیری که انتخاب میکنید متفاوت از این مثال باشد. بنابراین اطمینان حاصل کنید که موارد مناسب را جایگزین میکنید. پیکربندی Daemon فایل را باز کنید:
sudo vi /etc/bacula/bacula-fd.conf
باید چند مورد را تغییر دهیم و برخی اطلاعات را که در پیکربندی سرور خود نیاز خواهیم داشت ذخیره کنیم.
ابتدا با یافتن منبع Director که پس از نام میزبان کلاینت قرار دارد کار خود را آغاز میکنیم. از آنجا که آن Bacula Director که میخواهیم این کلاینت را کنترل کند، روی سرور باکولا قرار دارد، باید پارامتر «Name» را به نام میزبانی سرور پشتیبانی که در ادامه آن «dir-» آمده است تغییر دهیم. برای نمونه در مورد «BackupServer» به عنوان نام میزبانی سرور باکولا این مقدار پس از بهروزرسانی مانند زیر خواهد بود:
Director { Name = BackupServer-dir Password = "IrIK4BHRA2o5JUvw2C_YNmBX_70oqfaUi" }
همچنین باید مقدار Password که رمز عبور تولید شده به طور خودکار برای اتصال به Daemon فایل است را کپی کنید و آن را برای ارجاع در ادامه، ذخیره نمایید. این مقدار در زمان پیکربندی Director سرور که در مراحل آتی تنظیم میشود، جهت اتصال به Daemon فایل کلاینت لازم خواهد شد.
سپس باید یک پارامتر را در منبع FileDaemon تنظیم کنیم. پارامتر FAddress را برای مطابقت با FQDN خصوصی رایانههای کلاینت خود تغییر خواهیم داد. پارامتر Name باید از قبل به طرز صحیحی با نام Daemon فایل کلاینت تعیین شده باشد. این منبع باید چیزی مانند زیر باشد. مقدار FQDN یا IP واقعی را جایگزین کنید:
FileDaemon { # this is me Name = ClientHost-fd FDport = 9102 # where we listen for the director WorkingDirectory = /var/lib/bacula Pid Directory = /var/run/bacula Maximum Concurrent Jobs = 20 FDAddress = client_private_FQDN }
همچنین باید این daemon را طوری پیکربندی کنیم که پیامهای لاگ خود را به سرور پشتیبان ارسال کند. منبع message را یافته و پارامتر director را طوری تغییر دهید که با نام میزبانی سرور پشتیبان به همراه پسوند «dir-» مطابقت داشته باشد. ظاهر این فایل باید به صورت زیر باشد:
Messages { Name = Standard director = BackupServer-dir = all,!skipped,!restored }
فایل را ذخیره کنید و خارج شوید. Daemon فایل شما (کلاینت باکولا) اینک طوری پیکربندی شده است که به اتصالهای ورودی از شبکه خصوصی گوش فرا دهد. با دستور زیر بررسی کنید که فایل پیکربندی ساختار صحیحی داشته باشد:
sudo bacula-fd -tc /etc/bacula/bacula-fd.conf
اگر دستور فوق هیچ خروجی باز نگرداند، نشان میدهد که فایل ساختار صحیحی دارد. daemon فایل را ریاستارت کنید تا از تنظیمات جدید استفاده کند:
sudo service bacula-fd restart
اینک یک دایرکتوری ایجاد میکنیم که سرور باکولا بتواند فایلها را به آنجا بازیابی کنید. ساختار فایل را ایجاد کنید و مجوزها و مالکیت این دایرکتوری را مانند زیر تنظیم کنید:
sudo mkdir -p /bacula/restore sudo chown -R bacula:bacula /bacula sudo chmod -R 700 /bacula
این رایانه کلاینت اینک به طور صحیحی پیکربندی شده است. سپس سرور باکولا را طوری پیکربندی میکنیم که به کلاینت باکولا وصل شود.
افزودن FileSetها (سرور)
منظور از مجموعه فایل (FileSet) در باکولا، مجموعهای از فایلها یا دایرکتوریها هستند که باید مشمول یک پشتیبانگیری باشند و از سوی job های پشتیبانگیری روی سرور باکولا مورد استفاده قرار میگیرند.
اگر مقاله قبلی ما که در آن سرور پشتیبان باکولا را نصب کردیم مطالعه کرده باشید، اینک یک FileSet به نام «Full Set» دارید. اگر میخواهید job های پشتیبانگیری را اجرا کنید که شامل تقریباً همه فایلهای روی کلاینتهای پشتیبانگیری میشوند، در این صورت میتوانید از این FileSet در job های خود استفاده کنید. البته ممکن است دریابید که در اغلب موارد نیاز ندارید از همه چیز روی یک سرور، پشتیبان بگیرید و تنها زیرمجموعهای از فایلها کفایت میکند.
این که در زمینه انتخاب فایلهایی که باید پشتیبانگیری شوند و در یک FileSet قرار گیرند به صورت گزینشیتری عمل کنید، باعث میشود که فضای دیسک و همچنین زمان آزاد بیشتری روی سرور پشتیبانگیری برای اجرای یک job پشتیبان داشته باشید. همچنین باعث میشود که بازیابی نیز سادهتر باشد، چون دیگر لازم نیست در مجموعه فایل بزرگی مانند Full Set به دنبال فایلهایی که باید بازیابی شوند بگردید. در ادامه نشان میدهیم که چگونه میتوانید منابع FileSet را ایجاد کنید و از این رو میتوانید در زمان پشتیبانگیری به صورت گزیدهتری عمل کنید. روی سرور باکولا یک فایل به نام filesets.conf باز کنید. ما در دایرکتوری پیکربندی Bacula Director قبلاً چنین فایلی ایجاد کردهایم:
sudo vi /etc/bacula/conf.d/filesets.conf
یک منبع FileSet برای هر مجموعه از فایلهایی که میخواهید در job های پشتیبانی خودان استفاده کنید، ایجاد نمایید. در این نمونه ما یک FileSet ایجاد میکنیم که تنها شامل دایرکتوریهای home و etc است:
FileSet { Name = "Home and Etc" Include { Options { signature = MD5 compression = GZIP } File = /home File = /etc } Exclude { File = /home/bacula/not_important } }
در این فایل موارد مختلفی وجود دارند؛ اما چند مورد را باید حتماً به خاطر بسپارید:
- نام FileSet باید منحصر به فرد باشد.
- هر فایل یا پارتیشنی که میخواهید پشتیبانگیری شود را در آن وارد کنید.
- هر فایلی که نمیخواهید پشتیبانگیری شود؛ اما در نتیجه انتخاب دایرکتوری وارد فهرست پشتیبانگیری شده است، استثنا کنید.
شما میتوانید هر چند FileSet که میخواهید، داشته باشد. در نهایت فایل را ذخیره کرده و خارج شوید. اینک آماده هستیم که یک job پشتیبانگیری ایجاد کنیم که از FileSet جدید ما استفاده خواهد کرد.
افزودن کلاینت و job پشتیبانگیری به سرور باکولا
اینک آماده هستیم تا کلاینت خود را به سرور باکولا اضافه کنیم.
بدین منظور باید Bacula Director را با یک کلاینت جدید و منابع job پیکربندی کنیم. فایل conf.d/clients.conf را بازکنید:
sudo vi /etc/bacula/conf.d/clients.conf
افزودن منبع کلاینت
منبع کلاینت به پیکربندی Director با اطلاعاتی که برای اتصال به میزبان کلاینت نیاز دارد میپردازد. این اطلاعات شامل نام، آدرس و رمز عبور Daemon فایل کلاینت است. تعریف منبع کلاینت را در فایل بچسبانید. مطمئن شوید که نام میزبان کلاینت، FQDN خصوصی و رمز عبور (bacula-fd.conf) که هایلایت شده است را جایگزین کردهاید:
Client { Name = ClientHost-fd Address = client_private_FQDN FDPort = 9102 Catalog = MyCatalog Password = "IrIK4BHRA2o5JUvw2C_YNmBX_70oqfaUi" # password for Remote FileDaemon File Retention = 30 days # 30 days Job Retention = 6 months # six months AutoPrune = yes # Prune expired Jobs/Files }
برای هر کلاینت تنها یک بار باید این کار را تکرار کنید.
ایجاد job پشتیبانگیری
یک job پشتیبانگیری باید نامی منحصر به فرد داشته باشد و جزییات مواردی که باید پشتیبانگیری شوند را مشخص کرده باشد. سپس job پشتیبانگیری را در فایل قرار میدهیم و نام میزبانی کلاینت را به جای مواردی که هایلایت شده است جایگزین میکنیم:
Job { Name = "BackupClientHost" JobDefs = "DefaultJob" Client = ClientHost-fd Pool = RemoteFile FileSet="Home and Etc" }
بدین ترتیب یک job پشتیبانگیری به نام «BackupClientHost» ایجاد میشود که از دایرکتوریهای home و etc میزبان کلاینت را چنان که در Fileset به نام «Home and Etc» تعیین شده است، پشتیبان تهیه میکند. این job از تنظیماتی که در بخش «DefaultJob» و منابع pool «RemoteFile» تعیین شده استفاده میکند. هر دوی آنها در فایل اصلی bacula-dir.conf تعریف شدهاند. به طور پیش فرض job هایی که به صورت "JobDefs = "DefaultJob تنظیم شدهاند، به صورت هفتگی اجرا میشوند. هرزمان کارتان پایان یافت، فایل را ذخیره کرده و خارج شوید.
تأیید پیکربندی Director
در این بخش به بررسی اعتبار فایل پیکربندی Director میپردازیم:
sudo bacula-dir -tc /etc/bacula/bacula-dir.conf
اگر پس از اجرای دستور فوق هیچ خروجی ارائه نشود، بدین معنی است که هیچ خطایی در فایلهای پیکربندی Director باکولا وجود ندارد.
ریاستارت Bacula Director
برای این که تغییرات پیکربندی اعمال شوند، باید Bacula Director را ریاستارت کنید:
sudo service bacula-director restart
اینک کلاینت یا همان میزبان ریموت شما طوری پیکربندی شده است که از سوی سرور باکولا پشتیبانگیری شود.
تست اتصال کلاینت
ابتدا باید مطمئن شویم که Director باکولا میتواند به کلاینت خود وصل شود:
sudo bconsole
status client
Select Client resource: ClientHost-fd The defined Client resources are: 1: BackupServer-fd 2: ClientHost-fd Select Client (File daemon) resource (1-2): 2
وضعیت Daemon فایل در کلاینت، بیدرنگ بازگشت مییابد. اگر چنین نباشد در این صورت خطایی در اتصال وجود دارد، یا این که ممکن است پیکربندی سرور باکولا یا Daemon فایل کلاینت مشکل داشته باشد.
تست Job پشتیبانی
اجازه دهید که job پشتیبانی را اجرا کنیم تا ببینیم کار میکند یا نه. روی سرو باکولا، همچنان که در کنسول هستید، دستور زیر را اجرا کنید:
Run
از شما خواسته میشود که کدام job اجرا شود. آن job که جلوتر ایجاد کردید یعنی «4. BackupClientHost» را انتخاب کنید:
Select Job resource: BackupClientHost The defined Job resources are: 1: BackupLocalFiles 2: BackupCatalog 3: RestoreLocalFiles 4: BackupClientHost Select Job resource (1-4): 4
در اعلان تأیید گزینه «yes» را انتخاب کنید:
Confirmation prompt: OK to run? (yes/mod/no): yes
بررسی پیامها و وضعیتها
باکولا پس از اجرای job به ما میگوید که پیامهایی دارید. این پیامها خروجی تولید شده از سوی job های در حال اجرا هستند. با وارد کردن دستور زیر میتوانید این پیامها را بررسی کنید:
Messages
این پیامها باید این متن را نشان دهند: «No prior Full backup Job record found» و اعلام کنند که job پشتیان گیری آغاز شده است. اگر خطایی وجود داشته باشد یا چیزی درست نباشد در این پیام سرنخی از منشأ خطا ارائه خواهد شد. یک راه دیگر برای مشاهده وضعیت job بررسی وضعیت Director است. بدین منظور باید دستور زیر را در اعلان bconsole وارد کنید:
status director
اگر همه چیز درست باشد، پیامی میبینید که job در حال اجرا است و یا این که job با یک وضعیت «OK» پایان یافته است.
اجرای بازیابی
نخستین باری که کلاینت باکولا را راهاندازی میکنید باید تست کنید که آیا ریموت به طور درستی کار میکند یا نه. اگر میخواهید یک عملیات بازیابی اجرا کنید، از دستور restore در کنسول باکولا استفاده کنید.
restore all
در منوی انتخاب که ظاهر میشود، گزینههای بسیار متفاوتی وجود دارند که برای این که کدام فایلهای پشتیبان باید بازیابی شوند مورد استفاده قرار میگیرند. از آنجا که ما تنها یک پشتیبان داریم «Select the most recent backup» یعنی گزینه 5 را انتخاب میکنیم:
Select item (1-13): 5
سپس باید تعیین کنیم که کدام کلاینتها باید بازیابی شوند. ما میخواهیم میزبان ریموت را که قبلاً راهاندازی کردیم (برای نمونه «ClientHost-fd»)، را بازیابی نماییم:
Select the Client: ClientHost-fd Defined Clients: 1: BackupServer-fd 2: ClientHost-fd Select the Client (1-2): 2
دستور فوق یک درخت فایل مجازی پیش روی شما میگذارد که کل ساختار دایرکتوری پشتیبانگیری شده را به نمایش میگذارد. این رابط شبیه به یک shell است و اجازه میدهد که با دستورهای سادهای، فایلهایی که باید بازیابی شوند را انتخاب کنیم. از آنجا که قبلاً اشاره کردیم میخواهیم از گزینه «restore all» استفاده کنیم، بنابراین همه فایلهای پشتیبانگیری برای بازیابی علامتگذاری شدهاند. فایلهای علامتگذاری شده با یک کاراکتر (*) مشخص میشوند.
اگر میخواهید انتخاب خود را تغییر دهید، میتوانید با دستورهای ls و cd وارد بخشهای مختلف این فهرست شوید و فایلهایی که میخواهید بازیابی شوند را علامتگذاری کنید یا آنهایی که نمیخواهید بازیابی شوند را از حالت انتخاب خارج کنید. فهرست کامل دستورهای موجود در این بخش با وارد کردن دستور help در کنسول قابل مشاهده است. زمانی که کار انتخاب فایلهای بازیابی تکمیل شد، میتوانید با وارد کردن دستور زیر کار خود را ادامه دهید:
Done
تأیید کنید که میخواهید job بازیابی اجرا شود:
OK to run? (yes/mod/no): Yes
بررسی پیامها و وضعیتها
همانند job های پشتیبان در این مورد نیز میتوانید پیامها و وضعیت Director را پس از اجرای یک job بازیابی بررسی کنید. با وارد کردن دستور زیر پیامها را بررسی کنید:
messages
در این بخش احتمالاً پیامی را میبینید که job بازیابی آغاز شده و یا با وضعیت restore OK پایان یافته است. اگر هر گونه خطایی وجود داشته باشد، در این صورت در این پیام سرنخی در مورد منشأ این خطا به شما ارائه شده است.
در این مورد نیز بررسی وضعیت Director روشی عالی برای مشاهده وضعیت یک job در حال اجرا است:
status director
زمانی که کار بازیابی پایان یافت، میتوانید با وارد کردن دستور exit از کنسول باکولا خارج شوید:
Exit
اگر همه چیز به درستی عمل کرده باشد، شما توانستهاید فایلهای بازیابی شده را روی میزبان کلاینت در دایرکتوری bacula/restore/ ببینید. اگر قصد شما صرفاً تست فرایند بازیابی بوده است میتوانید همه فایلها را از این دایرکتوری حذف کنید.
سخن پایانی
در این مقاله موفق شدیم سرور باکولا را طوری پیکربندی کنیم که فایلها را از روی یک کلاینت ریموت باکولا پشتیبانگیری کند. اطمینان حاصل کنید که پیکربندی خود را بررسی و بازبینی کردهاید تا یقین کنید که FileSet صحیحی را در زمانبندی مناسبی برای نیازهای خود پشتیبانگیری میکنید.
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- پشتیبانگیری از حافظه جانبی
- آموزش پشتیبان گیری از بانک اطلاعاتی و تهیه فایل نصبی در C#
- مجموعه آموزشهای ابزارها و راهکارهای مدیریت وبسایتها
- آموزش مدیریت بانک اطلاعاتی اوراکل پیشرفته
- پشتیبانگیری و بازیابی فایلها در سیستمعامل لینوکس
- مجموعه آموزشهای پایگاه داده و سیستم های مدیریت اطلاعات
==
واقعا که همه چی عالی بود