mirror of
https://github.com/roles-ansible/ansible_role_restic_archiver.git
synced 2024-08-16 10:09:49 +02:00
100 lines
2.8 KiB
Django/Jinja
100 lines
2.8 KiB
Django/Jinja
#!/usr/bin/env bash
|
|
# {{ ansible_managed }}
|
|
# This file is designed to create a overview
|
|
# overof the restic backup and
|
|
# send it by mail - if wanted
|
|
cat <<EOT > /tmp/mailcontent
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>Restic summary</title>
|
|
</head>
|
|
<body>
|
|
<h1>SUMMARY for Restic BACKUP</h1>
|
|
|
|
EOT
|
|
|
|
{% for repo in restic_archiver__repos %}
|
|
|
|
# Settings for Server {{ repo['name'] | string }}
|
|
export RESTIC_REPOSITORY="{{ repo['location'] }}" 2>/dev/null
|
|
export RESTIC_PASSWORD='{{ repo['password'] | regex_replace('\'', '\'\\\'\'') }}' 2>/dev/null
|
|
BACKUP_NAME="{{ repo.name }}" 2>/dev/null
|
|
{#
|
|
|
|
STARTING MAIL OUTPUT
|
|
|
|
#}
|
|
|
|
cat <<EOT >> /tmp/mailcontent
|
|
|
|
<h2>{{ repo.name }}</h2>
|
|
|
|
$(restic check --quiet 2>/dev/null)
|
|
|
|
|
|
<h4>Latest Snapshots</h4>
|
|
<table style="width:100%">
|
|
<tr>
|
|
<th>Hostname</th>
|
|
<th>latest backup</th>
|
|
<th>Path</th>
|
|
</tr>
|
|
$(restic --quiet snapshots --last --json | jq -c '.[]' | while read i; do echo -e "$i" | python3 -c "import sys, json; jsondata=json.load(sys.stdin); print('<tr>\n<td>', jsondata['hostname'], '</td>\n<td>', jsondata['time'], '</td>\n<td>', str(jsondata['paths'][0]), '</td>\n</tr>\n')" ; done)
|
|
</table>
|
|
|
|
<table style="width:100%">
|
|
<tr>
|
|
<th>name</th>
|
|
<th>total size</th>
|
|
<th>total files</th>
|
|
</tr>
|
|
<tr>
|
|
<td>snapshots</td>
|
|
$(restic --quiet stats --json | python3 -c "import sys, json; jsondata=json.load(sys.stdin); print('<td>', str(int(jsondata['total_size'] / 1024 / 1024 / 1024 * 1000 )/1000 ), 'GB </td>\n<td>', str(jsondata['total_file_count']), ' Files</td>')")
|
|
</tr>
|
|
EOT
|
|
|
|
{% if repo.archive|default(false) %}
|
|
|
|
{% if restic_archiver__mount_required %}
|
|
if mountpoint -q {{ restic_archiver__mount_disk }}
|
|
then
|
|
echo "{{ restic_archiver__mount_disk }} is mounted"
|
|
else
|
|
mount -a 2>/dev/null
|
|
fi
|
|
{% endif %}
|
|
|
|
|
|
# ARCHIVE Settings for Server "{{ repo['name'] | string }}"
|
|
echo "EXTERNAL_BACKUP: {{ repo.name }}" 2>/dev/null
|
|
export RESTIC_REPOSITORY="{{ repo['archive_location'] }}" 2>/dev/null
|
|
export RESTIC_PASSWORD='{{ repo['archive_password'] | regex_replace('\'', '\'\\\'\'') }}' 2>/dev/null
|
|
BACKUP_NAME="{{ repo.name }}_archive" 2>/dev/null
|
|
|
|
restic --quiet stats --json | python3 -c "import sys, json; jsondata=json.load(sys.stdin); print('<tr>\n<td>external archive</td>\n<td>', str(int(jsondata['total_size'] / 1024 / 1024 / 1024 * 1000 )/1000 ), 'GB</td>\n<td> ', str(jsondata['total_file_count']), ' Files.</td>\n</tr>\n')" >> /tmp/mailcontent
|
|
{% endif %}
|
|
echo -e "</table>\n<br/><br/>" >> /tmp/mailcontent
|
|
restic check --quiet >> /tmp/mailcontent
|
|
|
|
{% endfor %}
|
|
sync
|
|
|
|
cat <<EOT >> /tmp/mailcontent
|
|
<br/><br/><br/>
|
|
<br/><br/><br/>
|
|
<br/><br/><br/>
|
|
<code>
|
|
$(df -h)
|
|
</code>
|
|
</body>
|
|
</html>
|
|
EOT
|
|
|
|
mail -a "Content-type: text/html" -s "restic backup report" {{ restic_archiver__mailaddress }} < /tmp/mailcontent
|
|
|
|
{% if restic_archiver__umount_after_usage %}
|
|
umount {{ restic_archiver__mount_disk }}
|
|
{% endif %}
|
|
|