Ein aktuelles Backup ist für jeden Benutzer (insbesondere für Unternehmen) extrem wichtig, da niemand vor dem Risiko eines Ausfalls des Datenträgers, des Verlusts von Informationen, des versehentlichen Löschens usw. gefeit ist. In solchen Situationen ist ein Backup die einzige Möglichkeit, Ihre wertvollen Daten wiederherzustellen und kann Ihnen viel Ärger, Zeit, Nerven und Geld ersparen.
Wir haben uns für die beliebte Software Bareos als Backup-System entschieden, weil sie:
- eine OpenSource-Lösung ist;
- aktiv weiterentwickelt wird;
- viele nützliche Funktionen hat;
- ihre Funktionalität mit Plugins erweitern kann.
Beschreibung der Aufgabe
Nehmen wir zum Beispiel drei Server: Bareos, BitrixVM und Windows Server 2012 R2. In unserem Fall befinden sie sich alle im selben Netzwerk; Bareos ermöglicht es Ihnen, Backups durchzuführen, auch wenn der Rechner offline ist.
Bareos - 172.16.10.10 BitrixVM - 172.16.10.11 Windows Server - 172.16.10.12
Für den Server mit Bareos werden wir CentOS 7 verwenden. Es erfolgt die übliche Installation:
# yum install -y bareos-client bareos-database-tools bareos-filedaemon bareos-database-mysql bareos bareos-bconsole bareos-database-common bareos-storage bareos-director bareos-common
Als Datenbank wird PostgreSQL verwendet. Die Installation ist ebenso einfach:
# yum install -y PostgreSQL-server postgresql-contrib
Bei der Installation von Bareos in /etc/bareos finden wir die folgende Liste von Dateien und Ordnern vor (mit Ausnahme des ssl-Verzeichnisses, zu dem wir etwas später kommen werden):
/bareos-dir.d
/bareos-sd.d
/ssl
bareos-dir.conf
bareos-fd.conf
bareos-sd.conf
bconsole.conf
.rndpwd
Nach der Installation erscheinen vorbereitete Skripte für die Arbeit mit Bareos im Verzeichnis /usr/lib/bareos/scripts/. Mithilfe dieser Skripte können Sie die Datenbank vorkonfigurieren (Datenbank, Tabellen und Berechtigungen erstellen):
su postgres -c /usr/lib/bareos/scripts/create_bareos_database
su postgres -c /usr/lib/bareos/scripts/make_bareos_tables
su postgres -c /usr/lib/bareos/scripts/grant_bareos_privileges
Ein wichtiger Hinweis: Die Namen der Maschinen müssen gelöst sein; falls nicht, fügen Sie die entsprechenden Zeilen in /etc/hosts ein:
172.16.10.10 bareos-server
172.16.10.10 bareos-fd
172.16.10.11 bitrixvm
172.16.10.12 win-fd
bareos-server - der Server selbst, bareos-fd - wir werden auch ein Backup des Servers selbst erstellen, d. h. er wird gleichzeitig als Client fungieren. Später in der Konfiguration wird er sichtbar sein; bitrixvm ist ein Client mit BitrixVM, win-fd ist ein Client mit Windows Server 2012 R2.
Der Serverteil für Bareos (der Director) muss in der Datei bareos-dir.conf konfiguriert werden. Der Director ist für alle durchgeführten Operationen verantwortlich.
Die wichtigsten Direktiven:
**Director** - Beschreibung des Director selbst;
**Storage** - das Gerät, auf das wir Backups schreiben;
**Catalog** - enthält Informationen über abgeschlossene Aufträge gespeicherte Dateien, Clients und Status;
**Messages** - welche Nachrichten gesammelt werden und wie sie zugestellt werden sollen;
**Console** - Einrichten der Konsole für die Verwaltung des Director;
**Client** - Beschreibung des Clients, von dem die Backups erstellt werden sollen;
**Pool** - ermöglicht die Verwaltung des Volumens, auf das die Daten für die verschiedenen Backup-Typen (Full Backups, Inkrementelle Backups, Differentielle Backups) geschrieben werden, die Begrenzung der Speicherdauer des Volumens und die Größen;
**FileSet** - bestimmt, welche Daten gesichert werden sollen, sowie zusätzliche Attribute; Schedule - Zeitplan;
**Job** - Beschreibung des Backup-Tasks.
Das Schema der Interaktion zwischen den Diensten sieht wie folgt aus (aus der offiziellen Bareos-Dokumentation):
Inhalt der Datei bareos-dir.conf:
Director {
# Erforderlicher Parameter für den Namen des Direktors
Name = bareos-server
# Erforderlicher Parameter für Abfragedateien
QueryFile="/usr/lib/bareos/scripts/query.sql"
# Anzahl der gleichzeitig ausgeführten Aufträge
Maximum Concurrent Jobs = 10
# Passwort (normalerweise werden 20-40 Zeichen verwendet, für den Test beschränken wir uns auf 9 Zeichen)
Password = "zcx@#$BGj"
# Festlegung der Benachrichtigungen, die verwendet werden sollen (die Message directive wird weiter unten beschrieben)
Messages = standard
# TLS-Verschlüsselung. Wird als nächstes beschrieben.
# TLS aktiviert
TLS Enable=yes
TLS Require = yes
TLS Verify Peer = yes
# Erlaubte CNs
TLS Allowed CN="bareos-server"
TLS Allowed CN="bitrixvm"
TLS Allowed CN="win-fd"
# Speicherort des CA-Zertifikats
TLS CA Certificate File = /etc/bareos/ssl/ca-chain.cert.pem
# Speicherort des Zertifikats TLS Certificate = /etc/bareos/ssl/bareos-server.cert.pem
# Speicherort des Schlüssels für das Zertifikat TLS Key = /etc/bareos/ssl/bareos-server.nopass.key.pem
TLS DH File = /etc/bareos/ssl/dh1024.pem
}
Storage {
Name=bareos-server-sd
# Sie können sowohl die IP als auch den Namen angeben. Damit TLS korrekt funktioniert, ist es wichtig, den #name anzugeben
Address = bareos-server
Password = "zcx@#$BGj"
# Gibt einen Namen für das Gerät an, auf dem die Daten gespeichert werden sollen. Die Geräteoptionen werden in der Datei bareos-sd.conf festgelegt
Device=bareos-sd
Media Type = File
port=9103
TLS Enable=yes
TLS Require = yes
TLS CA Certificate File = /etc/bareos/ssl/ca-chain.cert.pem
TLS Certificate = /etc/bareos/ssl/bareos-server.cert.pem
TLS Key = /etc/bareos/ssl/bareos-server.nopass.key.pem
}
Catalog {
# Setzen Sie alle Parameter für die Verbindung zur Datenbank fest
Name = bareos-server
dbdriver="postgresql"
dbname="bareos"
dbuser="bareos"
dbpassword=""
}
messages {
# Beschreibt die Arten von Nachrichten, die gesendet und protokolliert werden sollen
Name = Standard
mail = root@localhost = all, !skipped, !audit
console = all, !skipped, !saved, !audit
append = "/var/log/bareos/bareos.log" = all, !skipped, !audit
append = "/var/log/bareos/bareos-audit.log" = audit
}
client {
# Client-Name für das Backup
Name=bareos-fd
# Verzeichnisname
Catalog = bareos-server
enabled = yes
# Adresse, nach Name festgelegt
Address = bareos-server
Password = "zcx@#$BGj"
port=9102
# TLS-Parameter werden später beschrieben
TLS Enable=yes
TLS Require = yes
TLS CA Certificate File = /etc/bareos/ssl/ca-chain.cert.pem
TLS Certificate = /etc/bareos/ssl/bareos-server.cert.pem
TLS Key = /etc/bareos/ssl/bareos-server.nopass.key.pem
}
Pool {
# Poolname für Vollsicherung
Name = bareos-pool -Full
# Fügt automatisch eine Bezeichnung wie "bareos-client-Full-" + Nummer des #Volume zur Sicherungsdatei hinzu.
# Der endgültige Name des Volumes nach der nächsten Sicherung sieht beispielsweise so aus: bareos-client-# Full-0009
Label Format="bareos-client-Full-"
# Pool-Typ. Laut der offiziellen Dokumentation von BareOS ist derzeit nur der Typ Backup implementiert
Pool Type = Backup
# Volume für ein Full-Backup wird 3 Monate lang aufbewahrt
Volume Retention = 3 months
# Danach wird das Verzeichnis von veralteten Daten bereinigt
AutoPrune = yes
# Volume wird überschrieben
Recycle = yes
}
Pool {
# Poolname für inkrementelles Backup
Name = bareos-pool-incremental
Pool Type = Backup
Recycle = yes
Auto Prune = yes
Volume Retention = 10 days
Label Format="bareos-client-Incremental-"
}
Pool {
# Poolname für differenzielles Backup
Name=bareos-pool-Differential
Pool Type = Backup
Recycle = yes
Auto Prune = yes
Volume Retention = 11 days
Label Format="bareos-client-Differential-"
}
FileSet {
# Legen Sie einen Namen für eine Gruppe von Dateien fest
Name=bareos-fileset
# In Include geben wir an, welche Dateien gespeichert werden sollen. In diesem Fall der Ordner
/etc
include {
File="/etc"
}
}
Schedule {
# Name des Zeitplans
Name="MonthlyCycle"
# Einmal pro Woche eine Vollsicherung durchführen
Run = Level = Full mon at 2:00
# Tagsüber stündlich 5 inkrementelle Backups
Run = Level= Incremental hourly at 13:00
Run = Level = Incremental hourly at 14:00
Run = Level = Incremental hourly at 15:00
Run = Level = Incremental hourly at 16:00
Run = Level = Incremental hourly at 17:00
}
job {
# Name für den Auftrag
Name = Job-Full
# Sein Typ. Kann Backup oder Wiederherstellung sein
Type = Backup
# Backup-Level. Vollständig, differenziell oder inkrementell
Level = Incremental
# Für welchen Client der Auftrag ausgeführt werden soll
Client=bareos-fd
# Gruppe von Dateien
FileSet = bareos-fileset
# Zeitplan
Schedule = "Monthly Cycle"
# Name des verwendeten Speichers
Storage=bareos-server-sd
# Warnungen
Messages = standard
# Verwendeter Pool
Pool = bareos-pool-Full
Full Backup Pool = bareos-pool -Full
Differential Backup Pool = bareos-pool-Differential
Incremental Backup Pool = bareos-pool-Incremental
}
job {
Name = Job-Full-restore
Type = Restore
Client=bareos-fd
FileSet="bareos-fileset"
Storage=bareos-server-sd
Pool = bareos-pool-Full
Messages = standard
# Geben Sie den Pfad an, in den alle Dateien bei der Wiederherstellung gespeichert werden sollen.
Where=/tmp
}