Bacula هي أداة نسخ احتياطي مفتوحة المصدر (open-source) يمكن استخدامها للنسخ الاحتياطي واستعادة البيانات عبر الشبكة.
إنها أداة بسيطة وسهلة الاستخدام وتوفر العديد من ميزات إدارة التخزين المتقدمة التي تساعدك على النسخ الاحتياطي واستعادة الملفات المفقودة بسهولة.
يدعم Linux و Windows و macOS ويدعم أيضًا مجموعة واسعة من أجهزة النسخ الاحتياطي.
يتكون Bacula من عدة مكونات بما في ذلك Bacula directory وBacula console وBacula storage وBacula file وBacula catalog.
كل مكون مسؤول عن إدارة وظائف محددة.
المتطلبات الأساسية
ذاكرة وصول عشوائي لا تقل عن 2 جيجابايت.
إعداد كلمة مرور الـ root للخادم.
قم بتحديث نظامك إلى أحدث إصدار.
يمكنك تحديثه بالأمر التالي:
apt-get update -y
تثبيت Bacula
تتوفر حزمة Bacula في Ubuntu 20.04 بشكل تلقائي.
يمكنك تثبيته باستخدام الأمر التالي:
apt-get install bacula -y
سيُطلب منك تحديد خادم البريد:
حدد خادم البريد الذي تريده وانقر على زر ok.
سيُطلب منك تقديم اسم بريد النظام الخاص بك كما هو موضح أدناه:
أدخل اسم البريد الإلكتروني للنظام الخاص بك وانقر على زر ok.
سيُطلب منك تكوين قاعدة بيانات لـ bacula:
انقر فوق الزر Yes.
سيُطلب منك تحديد مضيف خادم PostgreSQL كما هو موضح أدناه:
حدد المضيف المحلي (localhost) وانقر على زر Ok.
سيُطلب منك تقديم كلمة مرور PostgreSQL:
أدخل كلمة المرور التي تريدها وانقر فوق الزر Ok لمتابعة التثبيت.
إعداد Bacula Storage
قم بإنشاء مجلد لتخزين ملفات النسخ الاحتياطي.
يمكنك إنشائه بالأمر التالي:
mkdir /backup
قم بتغيير ملكية مجلد bacula إلى مستخدم bacula والمجموعة باستخدام الأمر التالي:
chown -R bacula:bacula /backup
قم بتعديل الملف الافتراضي لتخزين bacula وتحديد الجهاز وموقع التخزين.
nano /etc/bacula/bacula-sd.conf
قم بإزالة جزء "Device {" و "Autochanger {" أو التعليق عليه وإضافة الأسطر التالية:
Device {
Name = Local-device
Media Type = File
Archive Device = /backup
LabelMedia = yes; # lets Bacula label unlabeled media
Random Access = Yes;
AutomaticMount = yes; # when device opened, read it
RemovableMedia = no;
AlwaysOpen = no;
Maximum Concurrent Jobs = 5
}
احفظ وأغلق الملف عند الانتهاء.
أعد تشغيل خدمة Bacula storage باستخدام الأمر التالي:
systemctl restart bacula-sd.service
تحقق من حالة Bacula storage بالأمر التالي:
systemctl status bacula-sd
ستحصل على النتيجة التالية:
? bacula-sd.service - Bacula Storage Daemon service
Loaded: loaded (/lib/systemd/system/bacula-sd.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-10-06 09:32:43 UTC; 8s ago
Docs: man:bacula-sd(8)
Process: 10687 ExecStartPre=/usr/sbin/bacula-sd -t -c $CONFIG (code=exited, status=0/SUCCESS)
Main PID: 10688 (bacula-sd)
Tasks: 2 (limit: 4691)
Memory: 1.0M
CGroup: /system.slice/bacula-sd.service
??10688 /usr/sbin/bacula-sd -fP -c /etc/bacula/bacula-sd.conf
Oct 06 09:32:43 ubuntu2004 systemd[1]: Starting Bacula Storage Daemon service...
Oct 06 09:32:43 ubuntu2004 systemd[1]: Started Bacula Storage Daemon service.
إعداد Bacula Director
قم بتعديل ملف إعداد Bacula director وادخل موقع التخزين الخاص بك:
nano /etc/bacula/bacula-dir.conf
أضف الأسطر التالية.
Storage {
Name = ubuntu2004-sd # Must be equal to the "Name" parameter of the "Storage" section in the /etc/bacula/bacula-sd.conf file
Address = 127.0.0.1
Password = "aFEH-0a3QycsbYQVcoy_VoUMhAHJQ00CD" # Password must match the password in the /etc/bacula/bacula-sd.conf
Device = Local-device
Media Type = File
}
FileSet {
Name = "Local-file"
Include {
Options {
signature = MD5
}
File = /etc
}
}
Schedule {
Name = "LocalDaily"
Run = Full daily at 06:00
}
Job {
Name = "LocalBackup"
JobDefs = "DefaultJob"
Enabled = yes
Level = Full
FileSet = "Local-file"
Schedule = "LocalDaily"
Storage = ubuntu2004-sd
Write Bootstrap = "/var/lib/bacula/LocalhostBackup.bsr"
}
احفظ وأغلق الملف.
أعد تشغيل خدمة Bacula director لتطبيق التغييرات:
systemctl restart bacula-dir
تحقق من حالة خدمة Bacula director بالأمر التالي:
systemctl status bacula-dir
ستحصل على النتيجة التالية:
? bacula-director.service - Bacula Director Daemon service
Loaded: loaded (/lib/systemd/system/bacula-director.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-10-06 09:32:43 UTC; 9s ago
Docs: man:bacula-dir(8)
Process: 10667 ExecStartPre=/usr/sbin/bacula-dir -t -c $CONFIG (code=exited, status=0/SUCCESS)
Main PID: 10683 (bacula-dir)
Tasks: 3 (limit: 4691)
Memory: 2.1M
CGroup: /system.slice/bacula-director.service
??10683 /usr/sbin/bacula-dir -fP -c /etc/bacula/bacula-dir.conf
Oct 06 09:32:43 ubuntu2004 systemd[1]: Starting Bacula Director Daemon service...
Oct 06 09:32:43 ubuntu2004 systemd[1]: Started Bacula Director Daemon service.
التحقق من Backup Job
تم تثبيت Bacula وتهيئته للعمل يوميًا في الساعة 6:00.
الآن دعنا نستخدم Bacula Console لتشغيل أول مهمة نسخ احتياطي.
bconsole
بمجرد الاتصال ستحصل على النتيجة التالية:
Connecting to Director localhost:9101
1000 OK: 103 ubuntu2004-dir Version: 9.4.2 (04 February 2019)
Enter a period to cancel a command.
قم بتشغيل الأمر التالي لبدء backup job:
*run
سيُطلب منك تحديد backup job كما هو موضح أدناه:
Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"
A job name must be specified.
The defined Job resources are:
1: BackupClient1
2: LocalBackup
3: BackupCatalog
4: RestoreFiles
Select Job resource (1-4): 2
اكتب 2 لتحديد LocalBackup الذي حددته في ملف الإعداد واضغط على Enter. سترى النتيجة التالية:
Run Backup job
JobName: LocalBackup
Level: Full
Client: ubuntu2004-fd
FileSet: Local-file
Pool: File (From Job resource)
Storage: ubuntu2004-sd (From Job resource)
When: 2020-10-06 09:50:47
Priority: 10
OK to run? (yes/mod/no): yes
Job queued. JobId=3
You have messages.
بدأت الـ backup job.
يمكنك التحقق من حالةbackup job باستخدام الأمر التالي:
*status
سيُطلب منك تحديد حالة المكونات التالية:
Status available for:
1: Director
2: Storage
3: Client
4: Scheduled
5: Network
6: All
Select daemon type for status (1-6): 1
اكتب 1 واضغط على Enter للتحقق من حالة Director.
سترى النتيجة التالية:
ubuntu2004-dir Version: 9.4.2 (04 February 2019) x86_64-pc-linux-gnu ubuntu 20.04
Daemon started 06-Oct-20 09:50, conf reloaded 06-Oct-2020 09:50:27
Jobs: run=1, running=0 mode=0,0
Heap: heap=274,432 smbytes=106,782 max_bytes=135,168 bufs=343 max_bufs=377
Res: njobs=4 nclients=1 nstores=3 npools=3 ncats=1 nfsets=3 nscheds=3
Scheduled Jobs:
Level Type Pri Scheduled Job Name Volume
===================================================================================
Full Backup 10 07-Oct-20 06:00 LocalBackup Vol-0001
====
Running Jobs:
Console connected at 06-Oct-20 09:50
No Jobs running.
====
Terminated Jobs:
JobId Level Files Bytes Status Finished Name
====================================================================
1 Full 2,262 2.875 M OK 06-Oct-20 09:50 LocalBackup
====
قم بتشغيل أمر الحالة مرة أخرى وتحقق من حالةBacula storage.
*status
سترى النتيجة التالية:
Status available for:
1: Director
2: Storage
3: Client
4: Scheduled
5: Network
6: All
Select daemon type for status (1-6): 2
The defined Storage resources are:
1: File1
2: ubuntu2004-sd
Select Storage resource (1-2): 1
Connecting to Storage daemon File1 at localhost:9103
ubuntu2004-sd Version: 9.4.2 (04 February 2019) x86_64-pc-linux-gnu ubuntu 20.04
Daemon started 06-Oct-20 09:50. Jobs: run=1, running=0.
Heap: heap=106,496 smbytes=369,301 max_bytes=567,404 bufs=90 max_bufs=110
Sizes: boffset_t=8 size_t=8 int32_t=4 int64_t=8 mode=0,0 newbsr=0
Res: ndevices=1 nautochgr=0
Running Jobs:
No Jobs running.
====
Jobs waiting to reserve a drive:
====
Terminated Jobs:
JobId Level Files Bytes Status Finished Name
===================================================================
3 Full 2,262 3.156 M OK 06-Oct-20 09:50 LocalBackup
====
Device status:
Device File: "Local-device" (/backup) is not open.
Available Space=93.95 GB
==
====
Used Volume status:
====
Attr spooling: 0 active jobs, 454,546 bytes; 1 total jobs, 454,546 max bytes.
====
اخرج من Bacula console باستخدام الأمر التالي:
*exit
تحقق من مجلد النسخ الاحتياطي باستخدام الأمر التالي:
ls /backup/
سترى أنه تم إنشاء نسخة احتياطية من المجلد 0001:
Vol-0001