mirror of
https://github.com/roles-ansible/ansible_role_restic/
synced 2024-11-08 21:03:30 +01:00
ae270aeebd
This commit implements the needs of #75[^1]: it allows for the creation of atomic backups when the backup target is a file/dir whose fs rests on LVM. This ensures the snapshot will be atomic. By using a mount namespace, the LVM snapshot can be done in the same directory -- so existing LVM-based applications of ansible_role_restic can be migrated to this implementation without any discontinuity in what appears to be backed up. This combination of LVM's snapshotting layer and mount namespaces comes with some caveats: - you cannot backup / due to namespace issues - subdirs with a separate fs won't be correctly detected - not all filesystems are happy about LVM snapshots -- btrfs, e.g. - LVM snapshots come with a performance penalty when active - fstrim and LVM snapshots don't like each other whatsoever [^1]: https://github.com/roles-ansible/ansible_role_restic/issues/75 -- Changes in v2: - Use `findmnt -v` to find snapshot when cleaning up - Check for _snap before `lvremove -y` Signed-off-by: Martin Kennedy <hurricos@gmail.com>
15 lines
324 B
Django/Jinja
15 lines
324 B
Django/Jinja
[Unit]
|
|
Description=Backup {{ item.name }} using restic
|
|
{% if item.lvm is defined %}
|
|
Conflicts=fstrim.service
|
|
After=fstrim.timer
|
|
{% endif %}
|
|
|
|
[Service]
|
|
Type=oneshot
|
|
{% if item.lvm is defined %}
|
|
PrivateMounts=on
|
|
{% endif %}
|
|
ExecStart={{ restic_script_dir }}/backup-{{ item.name }}.sh
|
|
TimeoutStartSec=0
|
|
Environment="CRON=true"
|