Compare commits

...

2 commits

Author SHA1 Message Date
d2417fc187 add borg sync script
Some checks are pending
/ run ansible (push) Waiting to run
2024-10-15 08:54:52 +02:00
fbdfcaac4d fix mode for files 2024-10-14 20:12:39 +02:00
4 changed files with 66 additions and 3 deletions

View file

@ -0,0 +1,57 @@
#!/bin/bash
# Change all the variables below to suit your needs:
SOURCE_DIRECTORY="/mnt/data/nextcloud-aio/backups/borg"
RCLONE_CONFIG="borgbase-nextcloud-aio"
TARGET_DIRECTORY="repo" # this is the BorgBase directory name: modify it only if you want to specify a different one (discouraged)
########################################
# DO NOT modify any of the following! #
########################################
if [ "$EUID" -ne 0 ]; then
echo "run as root"
output 1
fi
if ! [ -d "$SOURCE_DIRECTORY" ]; then
echo "The root directory does not exist."
exit 1
fi
if [ -z "$(ls -A "$SOURCE_DIRECTORY/")" ]; then
echo "The source directory is empty, which is not allowed."
exit 1
fi
if [ -f "$SOURCE_DIRECTORY/lock.roster" ]; then
echo "Unable to execute the script as the backup archive is currently modified. Please try again later."
exit 1
fi
if [ -f "$SOURCE_DIRECTORY/aio-lockfile" ]; then
echo "Cannot continue because aio-lockfile already exists."
exit 1
fi
touch "$SOURCE_DIRECTORY/aio-lockfile"
if ! rclone sync -v --exclude aio-lockfile "$SOURCE_DIRECTORY/" "$RCLONE_CONFIG:$TARGET_DIRECTORY"; then
if docker ps --format "{{.Names}}" | grep "^nextcloud-aio-nextcloud$"; then
docker exec -en nextcloud-aio-nextcloud bash /notify.sh "Rclone failed." "Failed to synchronise the backup repository with the target directory."
else
echo "Failed to synchronise the backup repository with the target directory."
fi
rm "$SOURCE_DIRECTORY/aio-lockfile"
exit 1
fi
rm "$SOURCE_DIRECTORY/aio-lockfile"
if docker ps --format "{{.Names}}" | grep "^nextcloud-aio-nextcloud$"; then
docker exec -en nextcloud-aio-nextcloud bash /notify.sh "Rclone backup successful!" "Synchronised the backup repository successfully."
else
echo "Synchronised the backup repository successfully."
fi

View file

@ -12,7 +12,7 @@
ansible.builtin.copy: ansible.builtin.copy:
src: "{{ item }}" src: "{{ item }}"
dest: "{{ dir }}/" dest: "{{ dir }}/"
mode: "0600" mode: preserve
with_fileglob: with_fileglob:
- files/{{ app_name }}/* - files/{{ app_name }}/*
- files/{{ app_name }}/.* - files/{{ app_name }}/.*

View file

@ -15,6 +15,12 @@
minute: 30 minute: 30
hour: "*/3" hour: "*/3"
job: /mnt/data/bin/healthcheck restic-prune /mnt/data/bin/restic-prune job: /mnt/data/bin/healthcheck restic-prune /mnt/data/bin/restic-prune
- name: Cron - Borgbase sync
ansible.builtin.cron:
name: borgbase sync
minute: 30
hour: 3
job: /mnt/data/bin/healthcheck borg-sync /mnt/data/bin/borg-sync
- name: Cron - SMART short - name: Cron - SMART short
ansible.builtin.cron: ansible.builtin.cron:
name: SMART short name: SMART short

View file

@ -8,7 +8,7 @@
ansible.builtin.copy: ansible.builtin.copy:
src: "{{ item }}" src: "{{ item }}"
dest: "{{ docker_dir }}/" dest: "{{ docker_dir }}/"
mode: "0600" mode: preserve
with_fileglob: with_fileglob:
- files/{{ docker_app_name }}/* - files/{{ docker_app_name }}/*
- files/{{ docker_app_name }}/.* - files/{{ docker_app_name }}/.*
@ -18,7 +18,7 @@
ansible.builtin.template: ansible.builtin.template:
src: "{{ item }}" src: "{{ item }}"
dest: "{{ docker_dir }}/{{ item | basename | regex_replace('\\.j2$', '') }}" dest: "{{ docker_dir }}/{{ item | basename | regex_replace('\\.j2$', '') }}"
mode: "0600" mode: preserve
with_fileglob: with_fileglob:
- templates/{{ docker_app_name }}/*.j2 - templates/{{ docker_app_name }}/*.j2
- templates/{{ docker_app_name }}/.*.j2 - templates/{{ docker_app_name }}/.*.j2