fist working backup script

This commit is contained in:
= 2022-11-03 09:35:40 +01:00
parent a263dc82e5
commit 3878f68e1f
6 changed files with 67 additions and 4 deletions

View File

@ -0,0 +1,44 @@
#!/bin/bash
{%- if pillar.restic.repository is defined %}
export RESTIC_REPOSITORY={{ pillar.restic.mount }}{{ pillar.restic.suffix }}
{%- else %}
export RESTIC_REPOSITORY="stfp:{{ pillar.restic.user }}@{{ pillar.restic.host }}:{{ pillar.restic.mount }}{{ pillar.restic.suffix }}"
{%- endif %}
export RESTIC_PASSWORD={{ pillar.restic.password }}
restic backup \
--exclude="*.tmp" \
--exclude="lost+found" \
--exclude="Cache" \
--exclude="cache" \
--exclude=".cache" \
--exclude="tmp" \
--exclude="temp" \
--exclude="Temp" \
--exclude="/home/*/go" \
--exclude="/home/*/.local/share/virtualenv" \
--exclude="/home/*/.local/share/virtualenvs" \
--exclude="/home/*/VirtualBox VMs" \
--exclude="/home/*/.mozillla/firefox/*/minidumps" \
--exclude="/home/*/.mozillla/firefox/*/storage" \
--exclude="/home/*/.mozillla/firefox/*/extensions.sqlite" \
--exclude="/home/*/.mozillla/firefox/*/urlclassifier3.sqlite" \
--exclude="/home/*/.config/google-chrome/*/Local Storage" \
--exclude="/home/*/.config/google-chrome/*/Session Storage" \
--exclude="/home/*/.config/google-chrome/*/Application Cache" \
--exclude="/home/*/.config/google-chrome/*/History" \
--exclude="/home/*/.config/google-chrome/*/History-journal" \
--exclude="/home/*/.config/google-chrome/*/History Provider Cache" \
--exclude="/home/*/.local/share/flatpak" \
--exclude="/home/*/.var/app/com.slack.Slack" \
--exclude="/home/*/.local/share/Trash" \
--exclude="/home/*/.config/Microsoft/Microsoft Teams" \
--exclude="/home/*/.wine" \
--exclude="/home/*/.vim/bundle" \
--exclude="/home/*/snap" \
--exclude="/home/*/Downloads" \
--exclude="/home/*/Nextcloud" \
--exclude="/home/*/git" \
--verbose \
{% if pillar.podman is defined %}{{ salt['cmd.run']('podman info -f "{{.Store.VolumePath}}"', runas=pillar.podman.user ) }} \{% endif %}
/home

View File

@ -2,7 +2,7 @@
Description=Automount for restic repository Description=Automount for restic repository
[Automount] [Automount]
Where={{ pillar['restic']['repository']['mount'] }} Where={{ pillar['restic']['mount'] }}
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target

View File

@ -3,7 +3,7 @@ Description=Mount the USB disk used as restic repository
[Mount] [Mount]
What=/dev/disk/by-uuid/{{ pillar['restic']['repository']['disk_uuid'] }} What=/dev/disk/by-uuid/{{ pillar['restic']['repository']['disk_uuid'] }}
Where={{ pillar['restic']['repository']['mount'] }} Where={{ pillar['restic']['mount'] }}
Type=auto Type=auto
Options=defaults Options=defaults

19
restic/init.sls Normal file
View File

@ -0,0 +1,19 @@
{% if pillar.restic.repository is defined %}
include:
- restic.repository
{% endif %}
Install restic packages:
pkg.installed:
- pkgs:
- restic
- restic-bash-completion
Copy backup script for {{ pillar.restic.user }}:
file.managed:
- name: {{ salt['user.info'](pillar.restic.user).home }}/bin/backup.sh
- source: salt://restic/files/backup.sh.jinja
- template: jinja
- user: {{ pillar.restic.user }}
- group: root
- mode: "0740"

View File

@ -1,4 +1,4 @@
{% set escape_command = [ "systemd-escape -p", pillar['restic']['repository']['mount']]|join(" ") %} {% set escape_command = [ "systemd-escape -p", pillar['restic']['mount']]|join(" ") %}
{% set unit_name = salt['cmd.shell'](escape_command) %} {% set unit_name = salt['cmd.shell'](escape_command) %}
Create restic repository mount unit: Create restic repository mount unit:

View File

@ -7,7 +7,7 @@ base:
'poblano.rre.nu': 'poblano.rre.nu':
- podman - podman
- restic.repository - restic
- cockpit - cockpit
'pepper.rre.nu': 'pepper.rre.nu':