Skip to content
Snippets Groups Projects
Commit 1525cd7b authored by Christian Elberfeld's avatar Christian Elberfeld
Browse files

Aktualisierung Borgbackup Scripte

parent 964beb7b
No related branches found
No related tags found
No related merge requests found
......@@ -2,26 +2,28 @@
# Pakete installieren
- name: pakete installieren
apt:
name: "{{ packages }}"
pkg: "{{ item }}"
update_cache: yes
state: present
vars:
packages:
- borgbackup
- logrotate
- moreutils
- openssl
- name: create directory
with_items:
- borgbackup
- logrotate
- moreutils
- openssl
- name: create directories 1
file:
path: "/srv/borgbackup/"
path: "{{ item }}"
state: "directory"
with_items:
- /srv/borgbackup
- /var/log/borgbackup
- name: create directories
- name: create directories 2
file:
path: "/srv/borgbackup/{{ item }}"
path: "/srv/borgbackup/{{ item.key }}"
state: "directory"
with_items: "{{ borgbackup_repos }}"
with_dict: "{{ borgbackup_repos }}"
- name: generate new repo_passphrase (check)
stat:
......@@ -54,23 +56,61 @@
# BorgBackup Scripte erstellen
- name: BorgBackup Scripte erstellen
template: src={{ item }} dest=/srv/borgbackup/{{ item }} mode=o+x
with_items:
- "borgbackup-check.sh"
- "borgbackup-create.sh"
- "borgbackup-delete.sh"
- "borgbackup-info.sh"
- "borgbackup-init.sh"
- "borgbackup-list.sh"
- "borgbackup-mount.sh"
- "borgbackup-prometheus.sh"
- name: BorgBackup log folder erstellen
file:
path: "/var/log/borgbackup"
state: "directory"
- name: BorgBackup Scripte erstellen (check)
template:
src: borgbackup-check.sh
dest: /srv/borgbackup/{{ item.key }}/borgbackup-check.sh
mode: u+x
with_dict: "{{ borgbackup_repos }}"
- name: BorgBackup Scripte erstellen (create)
template:
src: borgbackup-create.sh
dest: /srv/borgbackup/{{ item.key }}/borgbackup-create.sh
mode: u+x
with_dict: "{{ borgbackup_repos }}"
- name: BorgBackup Scripte erstellen (delete)
template:
src: borgbackup-delete.sh
dest: /srv/borgbackup/{{ item.key }}/borgbackup-delete.sh
mode: u+x
with_dict: "{{ borgbackup_repos }}"
- name: BorgBackup Scripte erstellen (init)
template:
src: borgbackup-init.sh
dest: /srv/borgbackup/{{ item.key }}/borgbackup-init.sh
mode: u+x
with_dict: "{{ borgbackup_repos }}"
- name: BorgBackup Scripte erstellen (info)
template:
src: borgbackup-info.sh
dest: /srv/borgbackup/{{ item.key }}/borgbackup-info.sh
mode: u+x
with_dict: "{{ borgbackup_repos }}"
- name: BorgBackup Scripte erstellen (list)
template:
src: borgbackup-list.sh
dest: /srv/borgbackup/{{ item.key }}/borgbackup-list.sh
mode: u+x
with_dict: "{{ borgbackup_repos }}"
- name: BorgBackup Scripte erstellen (mount)
template:
src: borgbackup-mount.sh
dest: /srv/borgbackup/{{ item.key }}/borgbackup-mount.sh
mode: u+x
with_dict: "{{ borgbackup_repos }}"
- name: BorgBackup Scripte erstellen (prometheus)
template:
src: borgbackup-prometheus.sh
dest: /srv/borgbackup/borgbackup-prometheus.sh
mode: u+x
- name: BorgBackup LogRotate config erstellen
template:
src: logrotate
......@@ -82,8 +122,9 @@
state: absent
- name: Cronjob für BorgBackup Backup
cron: name="borgbackup-create" weekday="{{borgbackup_weekday}}" hour="{{borgbackup_hour}}" minute="{{borgbackup_minute}}" job="/srv/borgbackup/borgbackup-create.sh 2>&1 | ts '[\\%Y-\\%m-\\%d \\%H:\\%M:\\%S]' >> /var/log/borgbackup/borgbackup.log"
cron: name="borgbackup-{{ item.key }}" weekday="{{ item.value.weekday }}" hour="{{ item.value.hour }}" minute="{{ item.value.minute }}" job="/srv/borgbackup/{{ item.key }}/borgbackup-create.sh 2>&1 | ts '[\\%Y-\\%m-\\%d \\%H:\\%M:\\%S]' >> /var/log/borgbackup/{{ item.key }}.log"
with_dict: "{{ borgbackup_repos }}"
- name: Cronjob für BorgBackup Prometheus export
cron: name="borgbackup-prom" weekday="*" hour="*" minute="0" job="/srv/borgbackup/borgbackup-prometheus.sh 2>&1 | ts '[\\%Y-\\%m-\\%d \\%H:\%M:\\%S]' >> /var/log/borgbackup/borgbackup.log"
cron: name="borgbackup-prom" weekday="*" hour="*" minute="0" job="/srv/borgbackup/borgbackup-prometheus.sh 2>&1 | ts '[\\%Y-\\%m-\\%d \\%H:\%M:\\%S]' >> /var/log/borgbackup/borgbackup-prometheus.log"
......@@ -5,10 +5,6 @@
export BORG_PASSPHRASE="{{repo_passphrase}}"
export BORG_RSH="ssh -i /srv/borgbackup/repo_sshkey"
echo "===[ Check Repo: {{ item.value.repo }} ]==="
borg check $1 $2 $3 --info --show-rc {{ item.value.options }} {{ item.value.repo }}
{% for repo_url in borgbackup_repos %}
echo "===[ Check Repo: {{repo_url}} ]============================================================"
borg check $1 $2 $3 --info --show-rc --remote-path borg1 {{repo_url}}
{% endfor %}
\ No newline at end of file
......@@ -3,25 +3,46 @@
export BORG_PASSPHRASE="{{repo_passphrase}}"
export BORG_RSH="ssh -i /srv/borgbackup/repo_sshkey"
export BACKUP_DATE=`date +%Y-%m-%d_%H_%M`
export LAST_BACKUPS_PROM="/var/lib/prometheus/node-exporter/lastbackup.prom"
# Ausführung der Backups
# anschließend Bereinigung
# abschließend Integritätscheck
{% for repo_url in borgbackup_repos %}
echo "===[ Create Backup: {{repo_url}} ]============================================================"
borg create $1 $2 $3 --info --show-rc --remote-path borg1 --stats --compression lzma,2 {{repo_url}}::$BACKUP_DATE \
echo "===[ Create Backup: {{ item.value.repo }} ]===" \
&& \
borg create $1 $2 $3 --info --show-rc --stats --compression {{ item.value.compression }} {{ item.value.options }} {{ item.value.repo }}::$BACKUP_DATE \
{% for directory in borgbackup_directories %}
{{ directory }} \
{% endfor %}
{% endfor %} \
{% if item.value.directories is defined %}
{% for directory in item.value.directories %}
{{ directory }} \
{% endfor %} \
{% endif %}
&& \
borg prune $1 $2 $3 --info --show-rc --list {{repo_url}} \
{% for prune in borgbackup_prune %}
{{ prune }} \
{% endfor %}
echo "===[ Prune old Backups: {{ item.value.repo }} ]===" \
&& \
borg check $1 $2 $3 --info --show-rc {{repo_url}}
{% endfor %}
borg prune $1 $2 $3 --info --show-rc --list {{ item.value.prune }} {{ item.value.options }} {{ item.value.repo }} \
&& \
echo "===[ Check Repo: {{ item.value.repo }} ]===" \
&& \
borg check $1 $2 $3 --info --show-rc {{ item.value.options }} {{ item.value.repo }} \
&& \
echo "===[ write: /srv/rsyncbackup/{{ item.key }}/lastbackup ]===" \
&& \
date > "/srv/borgbackup/{{ item.key }}/lastbackup" \
&& \
echo "===[ add value to: $LAST_BACKUPS_PROM ]===" \
&& \
touch $LAST_BACKUPS_PROM \
&& \
sed -i '/borgbackup_lastbackup{repo="{{ item.key }}"}/d' $LAST_BACKUPS_PROM \
&& \
echo "borgbackup_lastbackup{repo=\"{{ item.key }}\"} $(date +%s)" >> $LAST_BACKUPS_PROM \
&& \
echo "===[ send alerta heartbeat ]===" \
&& \
/srv/alerta_heartbeat/send_service_heartbeat.sh {{ item.value.heartbeat_timeout }} borg@{{ item.key }} \
&& \
echo "===[ DONE ]==="
......@@ -5,20 +5,11 @@ export BORG_RSH="ssh -i /srv/borgbackup/repo_sshkey"
# Löschen eines Backups
echo "Available Repos: "
{% for repo_url in borgbackup_repos %}
echo "{{repo_url}}"
{% endfor %}
echo "RepoName, followed by [ENTER]:"
read repo_url
echo "Available Backups: "
borg list $1 $2 $3 --info --show-rc --remote-path borg1 $repo_url
borg list $1 $2 $3 --info --show-rc {{ item.value.options }} {{ item.value.repo }}
echo "BackupName, followed by [ENTER]:"
read target
borg delete $1 $2 $3 --info --show-rc --remote-path borg1 $repo_url::$target
borg delete $1 $2 $3 --info --show-rc {{ item.value.options }} {{ item.value.repo }}::$target
......@@ -5,12 +5,11 @@ export BORG_RSH="ssh -i /srv/borgbackup/repo_sshkey"
# Anzeige des Inhaltes in den Borg Backup Archiven
{% for repo_url in borgbackup_repos %}
echo "============================================="
echo "Backups Repo Info: {{ item.key }} "
BACKUPS=$(borg list $1 $2 $3 --info --show-rc --remote-path borg1 {{repo_url}})
BACKUPS=$(borg list $1 $2 $3 --info --show-rc {{ item.value.options }} {{ item.value.repo }})
echo "============================================="
echo "Backups List "
echo "$BACKUPS"
BACKUPS_LIST=$(echo "$BACKUPS" | awk '{print $1}')
......@@ -19,11 +18,10 @@ for BACKUP in $BACKUPS_LIST; do
echo "============================================="
borg info $1 $2 $3 --info --show-rc --remote-path borg1 {{repo_url}}::$BACKUP
borg info $1 $2 $3 --info --show-rc {{ item.value.options }} {{ item.value.repo }}::$BACKUP
done
echo "============================================="
{% endfor %}
......@@ -6,18 +6,15 @@
export BORG_PASSPHRASE="{{repo_passphrase}}"
export BORG_RSH="ssh -i /srv/borgbackup/repo_sshkey"
{% for repo_url in borgbackup_repos %}
if [ ! -e "/srv/borgbackup/{{ item.key }}/initialized" ]; then
if [ ! -e "{{repo_url}}.initialized" ]; then
echo "Initialize Repo: {{ item.key }}"
date > "/srv/borgbackup/{{ item.key }}/initialized"
echo "Initialize Repo: {{repo_url}}"
date > "{{repo_url}}.initialized"
borg init $1 $2 $3 --info --show-rc --remote-path borg1 --encryption=repokey {{repo_url}}
borg init $1 $2 $3 --info --show-rc --encryption=repokey {{ item.value.options }} {{ item.value.repo }}
else
echo "Repo already initialized: {{repo_url}}"
echo "Repo already initialized: {{ item.key }}"
fi
{% endfor %}
......@@ -5,10 +5,7 @@ export BORG_RSH="ssh -i /srv/borgbackup/repo_sshkey"
# Anzeige des Inhaltes in den Borg Backup Archiven
{% for repo_url in borgbackup_repos %}
echo "===[ List Repo: {{ item.key }} ]==="
borg list $1 $2 $3 --info --show-rc {{ item.value.options }} {{ item.value.repo }}
echo "===[ List Repo: {{repo_url}} ]============================================================"
borg list $1 $2 $3 --info --show-rc --remote-path borg1 {{repo_url}}
{% endfor %}
......@@ -5,17 +5,8 @@ export BORG_RSH="ssh -i /srv/borgbackup/repo_sshkey"
# Einhängen der Repos in /mnt/
echo "Available Repos: "
echo "Directory to mount, followed by [ENTER]:"
read target
{% for repo_url in borgbackup_repos %}
echo "{{repo_url}}"
{% endfor %}
echo "RepoName, followed by [ENTER]:"
read repo_url
echo -n 'Mounting to: /mnt'
mkdir /mnt/
borg mount $1 $2 $3 --info --show-rc --remote-path borg1 $repo_url /mnt/
borg mount $1 $2 $3 --info --show-rc {{ item.value.options }} {{ item.value.repo }} $target
......@@ -28,11 +28,14 @@ function calc_bytes {
esac
}
echo "borgbackup_repos_count {{borgbackup_repos|length}}" > $TMP_FILE
# create temp file
TMP_FILE=$(mktemp)
echo "borgbackup_repos_count {{ borgbackup_repos|length }}" > $TMP_FILE
{% for repo_url in borgbackup_repos %}
{% for repo in borgbackup_repos %}
BACKUPS=$(borg list --remote-path borg1 {{repo_url}})
BACKUPS=$(borg list {{ borgbackup_repos[repo].options }} {{ borgbackup_repos[repo].repo }})
BACKUPS_LIST=$(echo "$BACKUPS" | awk '{print $1}')
COUNTER=0
......@@ -42,15 +45,12 @@ for BACKUP in $BACKUPS_LIST; do
done
BORG_INFO=$(borg info --remote-path borg1 {{repo_url}}::$BACKUP)
# create temp file
TMP_FILE=$(mktemp)
BORG_INFO=$(borg info {{ borgbackup_repos[repo].options }} {{ borgbackup_repos[repo].repo }}::$BACKUP)
echo "borgbackup_count{repo="{{ repo_url }}"} $COUNTER" > $TMP_FILE
echo "borgbackup_files{repo="{{ repo_url }}"} $(echo "$BORG_INFO" | grep "Number of files" | awk '{print $4}')" >> $TMP_FILE
echo "borgbackup_chunks_unique{repo="{{ repo_url }}"} $(echo "$BORG_INFO" | grep "Chunk index" | awk '{print $3}')" >> $TMP_FILE
echo "borgbackup_chunks_total{repo="{{ repo_url }}"} $(echo "$BORG_INFO" | grep "Chunk index" | awk '{print $4}')" >> $TMP_FILE
echo "borgbackup_count{repo=\"{{ repo }}\"} $COUNTER" >> $TMP_FILE
echo "borgbackup_files{repo=\"{{ repo }}\"} $(echo "$BORG_INFO" | grep "Number of files" | awk '{print $4}')" >> $TMP_FILE
echo "borgbackup_chunks_unique{repo=\"{{ repo }}\"} $(echo "$BORG_INFO" | grep "Chunk index" | awk '{print $3}')" >> $TMP_FILE
echo "borgbackup_chunks_total{repo=\"{{ repo }}\"} $(echo "$BORG_INFO" | grep "Chunk index" | awk '{print $4}')" >> $TMP_FILE
# byte size calculation
LAST_SIZE=$(calc_bytes $(echo "$BORG_INFO" |grep "This archive" |awk '{print $3}') $(echo "$BORG_INFO" |grep "This archive" |awk '{print $4}'))
......@@ -60,12 +60,12 @@ TOTAL_SIZE=$(calc_bytes $(echo "$BORG_INFO" |grep "All archives" |awk '{print $3
TOTAL_SIZE_COMPRESSED=$(calc_bytes $(echo "$BORG_INFO" |grep "All archives" |awk '{print $5}') $(echo "$BORG_INFO" |grep "All archives" |awk '{print $6}'))
TOTAL_SIZE_DEDUP=$(calc_bytes $(echo "$BORG_INFO" |grep "All archives" |awk '{print $7}') $(echo "$BORG_INFO" |grep "All archives" |awk '{print $8}'))
echo "borgbackup_last_size{repo="{{ repo_url }}"} $LAST_SIZE" >> $TMP_FILE
echo "borgbackup_last_size_compressed{repo="{{ repo_url }}"} $LAST_SIZE_COMPRESSED" >> $TMP_FILE
echo "borgbackup_last_size_dedup{repo="{{ repo_url }}"} $LAST_SIZE_DEDUP" >> $TMP_FILE
echo "borgbackup_total_size{repo="{{ repo_url }}"} $TOTAL_SIZE" >> $TMP_FILE
echo "borgbackup_total_size_compressed{repo="{{ repo_url }}"} $TOTAL_SIZE_COMPRESSED" >> $TMP_FILE
echo "borgbackup_total_size_dedup{repo="{{ repo_url }}"} $TOTAL_SIZE_DEDUP" >> $TMP_FILE
echo "borgbackup_last_size{repo=\"{{ repo }}\"} $LAST_SIZE" >> $TMP_FILE
echo "borgbackup_last_size_compressed{repo=\"{{ repo }}\"} $LAST_SIZE_COMPRESSED" >> $TMP_FILE
echo "borgbackup_last_size_dedup{repo=\"{{ repo }}\"} $LAST_SIZE_DEDUP" >> $TMP_FILE
echo "borgbackup_total_size{repo=\"{{ repo }}\"} $TOTAL_SIZE" >> $TMP_FILE
echo "borgbackup_total_size_compressed{repo=\"{{ repo }}\"} $TOTAL_SIZE_COMPRESSED" >> $TMP_FILE
echo "borgbackup_total_size_dedup{repo=\"{{ repo }}\"} $TOTAL_SIZE_DEDUP" >> $TMP_FILE
{% endfor %}
......@@ -73,5 +73,5 @@ echo "borgbackup_total_size_dedup{repo="{{ repo_url }}"} $TOTAL_SIZE_DEDUP" >> $
mv $TMP_FILE $PROM_FILE
chown prometheus:prometheus $PROM_FILE
echo "created BorgBackup statistic for $COUNTER backups in $PROM_FILE"
echo "created BorgBackup statistic for {{ borgbackup_repos|length }} repos: $PROM_FILE"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment