1
This commit is contained in:
commit
9f4e1b3e8c
33
Makefile
Normal file
33
Makefile
Normal file
@ -0,0 +1,33 @@
|
||||
all:
|
||||
echo OK
|
||||
|
||||
install-mariadb-server:
|
||||
dnf check-update
|
||||
dnf install -y mariadb-server
|
||||
systemctl enable mariadb
|
||||
systemctl start mariadb
|
||||
|
||||
install-bacula:
|
||||
dnf check-update
|
||||
dnf install -y bacula-director bacula-storage bacula-console bacula-client
|
||||
alternatives --set libbaccats.so /usr/lib64/libbaccats-mysql.so
|
||||
mysql -uroot < create-bacula-database.sql
|
||||
mysql -uroot <create-dump-user.sql
|
||||
/usr/libexec/bacula/make_mysql_tables
|
||||
|
||||
install-bacula-mysql-scripts:
|
||||
cp -vf pre-mysql.sh /etc/bacula/pre-mysql.sh
|
||||
cp -vf post-mysql.sh /etc/bacula/post-mysql.sh
|
||||
chmod +x /etc/bacula/pre-mysql.sh
|
||||
chmod +x /etc/bacula/post-mysql.sh
|
||||
|
||||
install-director-config:
|
||||
cp -vf bacula-dir.conf /etc/bacula/bacula-dir.conf
|
||||
|
||||
enable-bacula-servies:
|
||||
systemctl enable bacula-dir.service
|
||||
systemctl enable bacula-fd.service
|
||||
systemctl enable bacula-sd.service
|
||||
systemctl restart bacula-dir.service
|
||||
systemctl restart bacula-fd.service
|
||||
systemctl restart bacula-sd.service
|
354
bacula-dir.conf
Normal file
354
bacula-dir.conf
Normal file
@ -0,0 +1,354 @@
|
||||
#
|
||||
# Default Bacula Director Configuration file
|
||||
#
|
||||
# The only thing that MUST be changed is to add one or more
|
||||
# file or directory names in the Include directive of the
|
||||
# FileSet resource.
|
||||
#
|
||||
# For Bacula release 9.0.6 (20 November 2017) -- redhat Rukavishnikov)
|
||||
#
|
||||
# You might also want to change the default email address
|
||||
# from root to your address. See the "mail" and "operator"
|
||||
# directives in the Messages resource.
|
||||
#
|
||||
# Copyright (C) 2000-2017 Kern Sibbald
|
||||
# License: BSD 2-Clause; see file LICENSE-FOSS
|
||||
#
|
||||
|
||||
Director { # define myself
|
||||
Name = bacula-dir
|
||||
DIRport = 9101 # where we listen for UA connections
|
||||
QueryFile = "/etc/bacula/query.sql"
|
||||
WorkingDirectory = "/var/spool/bacula"
|
||||
PidDirectory = "/var/run"
|
||||
Maximum Concurrent Jobs = 20
|
||||
Password = "@@DIR_PASSWORD@@" # Console password
|
||||
Messages = Daemon
|
||||
}
|
||||
|
||||
JobDefs {
|
||||
Name = "DefaultJob"
|
||||
Type = Backup
|
||||
Level = Incremental
|
||||
Client = bacula-fd
|
||||
FileSet = "Full Set"
|
||||
Schedule = "WeeklyCycle"
|
||||
Storage = File1
|
||||
Messages = Standard
|
||||
Pool = File
|
||||
SpoolAttributes = yes
|
||||
Priority = 10
|
||||
Write Bootstrap = "/var/spool/bacula/%c.bsr"
|
||||
}
|
||||
|
||||
|
||||
#
|
||||
# Define the main nightly save backup job
|
||||
# By default, this job will back up to disk in /tmp
|
||||
Job {
|
||||
Name = "BackupClient1"
|
||||
JobDefs = "DefaultJob"
|
||||
}
|
||||
|
||||
#Job {
|
||||
# Name = "BackupClient2"
|
||||
# Client = bacula2-fd
|
||||
# JobDefs = "DefaultJob"
|
||||
#}
|
||||
|
||||
#Job {
|
||||
# Name = "BackupClient1-to-Tape"
|
||||
# JobDefs = "DefaultJob"
|
||||
# Storage = LTO-4
|
||||
# Spool Data = yes # Avoid shoe-shine
|
||||
# Pool = Default
|
||||
#}
|
||||
|
||||
#}
|
||||
|
||||
# Backup the catalog database (after the nightly save)
|
||||
Job {
|
||||
Name = "BackupCatalog"
|
||||
JobDefs = "DefaultJob"
|
||||
Level = Full
|
||||
FileSet="Catalog"
|
||||
Schedule = "WeeklyCycleAfterBackup"
|
||||
# This creates an ASCII copy of the catalog
|
||||
# Arguments to make_catalog_backup.pl are:
|
||||
# make_catalog_backup.pl <catalog-name>
|
||||
RunBeforeJob = "/usr/libexec/bacula/make_catalog_backup.pl MyCatalog"
|
||||
# This deletes the copy of the catalog
|
||||
RunAfterJob = "/usr/libexec/bacula/delete_catalog_backup"
|
||||
Write Bootstrap = "/var/spool/bacula/%n.bsr"
|
||||
Priority = 11 # run after main backup
|
||||
}
|
||||
|
||||
#
|
||||
# Standard Restore template, to be changed by Console program
|
||||
# Only one such job is needed for all Jobs/Clients/Storage ...
|
||||
#
|
||||
Job {
|
||||
Name = "RestoreFiles"
|
||||
Type = Restore
|
||||
Client=bacula-fd
|
||||
Storage = File1
|
||||
# The FileSet and Pool directives are not used by Restore Jobs
|
||||
# but must not be removed
|
||||
FileSet="Full Set"
|
||||
Pool = File
|
||||
Messages = Standard
|
||||
Where = /tmp/bacula-restores
|
||||
}
|
||||
|
||||
|
||||
# List of files to be backed up
|
||||
FileSet {
|
||||
Name = "Full Set"
|
||||
Include {
|
||||
Options {
|
||||
signature = MD5
|
||||
}
|
||||
#
|
||||
# Put your list of files here, preceded by 'File =', one per line
|
||||
# or include an external list with:
|
||||
#
|
||||
# File = <file-name
|
||||
#
|
||||
# Note: / backs up everything on the root partition.
|
||||
# if you have other partitions such as /usr or /home
|
||||
# you will probably want to add them too.
|
||||
#
|
||||
# By default this is defined to point to the Bacula binary
|
||||
# directory to give a reasonable FileSet to backup to
|
||||
# disk storage during initial testing.
|
||||
#
|
||||
File = /usr/sbin
|
||||
}
|
||||
|
||||
#
|
||||
# If you backup the root directory, the following two excluded
|
||||
# files can be useful
|
||||
#
|
||||
Exclude {
|
||||
File = /var/spool/bacula
|
||||
File = /tmp
|
||||
File = /proc
|
||||
File = /tmp
|
||||
File = /sys
|
||||
File = /.journal
|
||||
File = /.fsck
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# When to do the backups, full backup on first sunday of the month,
|
||||
# differential (i.e. incremental since full) every other sunday,
|
||||
# and incremental backups other days
|
||||
Schedule {
|
||||
Name = "WeeklyCycle"
|
||||
Run = Full 1st sun at 23:05
|
||||
Run = Differential 2nd-5th sun at 23:05
|
||||
Run = Incremental mon-sat at 23:05
|
||||
}
|
||||
|
||||
# This schedule does the catalog. It starts after the WeeklyCycle
|
||||
Schedule {
|
||||
Name = "WeeklyCycleAfterBackup"
|
||||
Run = Full sun-sat at 23:10
|
||||
}
|
||||
|
||||
# This is the backup of the catalog
|
||||
FileSet {
|
||||
Name = "Catalog"
|
||||
Include {
|
||||
Options {
|
||||
signature = MD5
|
||||
}
|
||||
File = "/var/spool/bacula/bacula.sql"
|
||||
}
|
||||
}
|
||||
|
||||
# Client (File Services) to backup
|
||||
Client {
|
||||
Name = bacula-fd
|
||||
Address = localhost
|
||||
FDPort = 9102
|
||||
Catalog = MyCatalog
|
||||
Password = "@@FD_PASSWORD@@" # password for FileDaemon
|
||||
File Retention = 60 days # 60 days
|
||||
Job Retention = 6 months # six months
|
||||
AutoPrune = yes # Prune expired Jobs/Files
|
||||
}
|
||||
|
||||
#
|
||||
# Second Client (File Services) to backup
|
||||
# You should change Name, Address, and Password before using
|
||||
#
|
||||
#Client {
|
||||
# Name = bacula2-fd
|
||||
# Address = localhost2
|
||||
# FDPort = 9102
|
||||
# Catalog = MyCatalog
|
||||
# Password = "@@FD_PASSWORD@@2" # password for FileDaemon 2
|
||||
# File Retention = 60 days # 60 days
|
||||
# Job Retention = 6 months # six months
|
||||
# AutoPrune = yes # Prune expired Jobs/Files
|
||||
#}
|
||||
|
||||
|
||||
# Definition of file Virtual Autochanger device
|
||||
Autochanger {
|
||||
Name = File1
|
||||
# Do not use "localhost" here
|
||||
Address = localhost # N.B. Use a fully qualified name here
|
||||
SDPort = 9103
|
||||
Password = "@@SD_PASSWORD@@"
|
||||
Device = FileChgr1
|
||||
Media Type = File1
|
||||
Maximum Concurrent Jobs = 10 # run up to 10 jobs a the same time
|
||||
Autochanger = File1 # point to ourself
|
||||
}
|
||||
|
||||
# Definition of a second file Virtual Autochanger device
|
||||
# Possibly pointing to a different disk drive
|
||||
Autochanger {
|
||||
Name = File2
|
||||
# Do not use "localhost" here
|
||||
Address = localhost # N.B. Use a fully qualified name here
|
||||
SDPort = 9103
|
||||
Password = "@@SD_PASSWORD@@"
|
||||
Device = FileChgr2
|
||||
Media Type = File2
|
||||
Autochanger = File2 # point to ourself
|
||||
Maximum Concurrent Jobs = 10 # run up to 10 jobs a the same time
|
||||
}
|
||||
|
||||
# Definition of LTO-4 tape Autochanger device
|
||||
#Autochanger {
|
||||
# Name = LTO-4
|
||||
# Do not use "localhost" here
|
||||
# Address = localhost # N.B. Use a fully qualified name here
|
||||
# SDPort = 9103
|
||||
# Password = "@@SD_PASSWORD@@" # password for Storage daemon
|
||||
# Device = LTO-4 # must be same as Device in Storage daemon
|
||||
# Media Type = LTO-4 # must be same as MediaType in Storage daemon
|
||||
# Autochanger = LTO-4 # enable for autochanger device
|
||||
# Maximum Concurrent Jobs = 10
|
||||
#}
|
||||
|
||||
# Generic catalog service
|
||||
Catalog {
|
||||
Name = MyCatalog
|
||||
# dbname = "bacula"; dbuser = "bacula"; dbpassword = ""
|
||||
dbname = "bacula"; dbuser = "bacula"; dbpassword = "password"
|
||||
|
||||
}
|
||||
|
||||
# Reasonable message delivery -- send most everything to email address
|
||||
# and to the console
|
||||
Messages {
|
||||
Name = Standard
|
||||
#
|
||||
# NOTE! If you send to two email or more email addresses, you will need
|
||||
# to replace the %r in the from field (-f part) with a single valid
|
||||
# email address in both the mailcommand and the operatorcommand.
|
||||
# What this does is, it sets the email address that emails would display
|
||||
# in the FROM field, which is by default the same email as they're being
|
||||
# sent to. However, if you send email to more than one address, then
|
||||
# you'll have to set the FROM address manually, to a single address.
|
||||
# for example, a 'no-reply@mydomain.com', is better since that tends to
|
||||
# tell (most) people that its coming from an automated source.
|
||||
|
||||
#
|
||||
mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
|
||||
operatorcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r"
|
||||
mail = root@localhost = all, !skipped
|
||||
operator = root@localhost = mount
|
||||
console = all, !skipped, !saved
|
||||
#
|
||||
# WARNING! the following will create a file that you must cycle from
|
||||
# time to time as it will grow indefinitely. However, it will
|
||||
# also keep all your messages if they scroll off the console.
|
||||
#
|
||||
append = "/var/log/bacula/bacula.log" = all, !skipped
|
||||
catalog = all
|
||||
}
|
||||
|
||||
|
||||
#
|
||||
# Message delivery for daemon messages (no job).
|
||||
Messages {
|
||||
Name = Daemon
|
||||
mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula daemon message\" %r"
|
||||
mail = root@localhost = all, !skipped
|
||||
console = all, !skipped, !saved
|
||||
append = "/var/log/bacula/bacula.log" = all, !skipped
|
||||
}
|
||||
|
||||
# Default pool definition
|
||||
Pool {
|
||||
Name = Default
|
||||
Pool Type = Backup
|
||||
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
|
||||
}
|
||||
|
||||
# File Pool definition
|
||||
Pool {
|
||||
Name = File
|
||||
Pool Type = Backup
|
||||
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
|
||||
Label Format = "Vol-" # Auto label
|
||||
}
|
||||
|
||||
|
||||
# Scratch pool definition
|
||||
Pool {
|
||||
Name = Scratch
|
||||
Pool Type = Backup
|
||||
}
|
||||
|
||||
#
|
||||
# Restricted console used by tray-monitor to get the status of the director
|
||||
#
|
||||
Console {
|
||||
Name = bacula-mon
|
||||
Password = "@@MON_DIR_PASSWORD@@"
|
||||
CommandACL = status, .status
|
||||
}
|
||||
|
||||
|
||||
FileSet {
|
||||
Name = MySQLFileSet
|
||||
Include {
|
||||
Options {
|
||||
signature = MD5
|
||||
}
|
||||
File = /opt/mysql-backup
|
||||
}
|
||||
}
|
||||
|
||||
Schedule {
|
||||
Name = MySQL
|
||||
Run = Full daily at 03:00
|
||||
}
|
||||
|
||||
Job {
|
||||
Name = "MySQLBackup"
|
||||
JobDefs = "DefaultJob"
|
||||
Enabled = yes
|
||||
Level = Full
|
||||
FileSet = MySQLFileSet
|
||||
Schedule = MySQL
|
||||
Storage = File1
|
||||
ClientRunBeforeJob = "/etc/bacula/pre-mysql.sh"
|
||||
ClientRunAfterJob = "/etc/bacula/post-mysql.sh"
|
||||
Write Bootstrap = "/var/spool/bacula/%c.bsr"
|
||||
}
|
4
create-bacula-database.sql
Normal file
4
create-bacula-database.sql
Normal file
@ -0,0 +1,4 @@
|
||||
create database bacula;
|
||||
create user bacula@localhost identified by 'password';
|
||||
grant all privileges on bacula.* to bacula@'localhost';
|
||||
flush privileges;
|
4
create-dump-user.sql
Normal file
4
create-dump-user.sql
Normal file
@ -0,0 +1,4 @@
|
||||
create user dump@localhost identified by 'password';
|
||||
grant select, lock tables on *.* to dump@localhost;
|
||||
grant process on *.* to dump@localhost;
|
||||
flush privileges;
|
11
install-bacula.sh
Executable file
11
install-bacula.sh
Executable file
@ -0,0 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
dnf install -y bacula-director bacula-storage bacula-console bacula-client
|
||||
|
||||
alternatives --set libbaccats.so /usr/lib64/libbaccats-mysql.so
|
||||
|
||||
mysql -uroot < create-bacula-database.sql
|
||||
mysql -uroot <create-dump-user.sql
|
||||
|
||||
# initialize bacule database tables
|
||||
/usr/libexec/bacula/make_mysql_tables -p
|
4
post-mysql.sh
Executable file
4
post-mysql.sh
Executable file
@ -0,0 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Clearing the folder
|
||||
rm -rf /opt/mysql-backup/
|
8
pre-mysql.sh
Executable file
8
pre-mysql.sh
Executable file
@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Preparation of the folder
|
||||
rm -rf /opt/mysql-backup/
|
||||
mkdir -p /opt/mysql-backup/
|
||||
|
||||
# Backup
|
||||
mysqldump -u dump -ppassword --all-databases --routines > /opt/mysql-backup/dump$(date +%Y-%m-%d_%H:%M).sql
|
10
run-jobs.sh
Executable file
10
run-jobs.sh
Executable file
@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
declare -a JOBNAMES=(
|
||||
MySQLBackup
|
||||
)
|
||||
|
||||
for job in ${JOBNAMES[@]}; do
|
||||
printf "run job=\"%s\" level=Incremental yes\n" ${job}
|
||||
done | bconsole
|
Loading…
Reference in New Issue
Block a user