Add a backblaze backup script
This commit is contained in:
parent
2c3c38f106
commit
92970a673f
10
ansible/b2.cred.j2
Normal file
10
ansible/b2.cred.j2
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Backblaze B2 configuration variables
|
||||||
|
B2_ACCOUNT="{{ b2_key_id }}"
|
||||||
|
B2_KEY="{{ b2_app_key }}"
|
||||||
|
B2_BUCKET="loki-backup"
|
||||||
|
|
||||||
|
# GPG key (last 8 characters)
|
||||||
|
GPG_KEY="{{ gpg_key_id }}"
|
||||||
|
PASSPHRASE="{{ gpg_passphrase }}"
|
@ -6,3 +6,4 @@ WorkingDirectory={{ loki_dir }}
|
|||||||
Type=oneshot
|
Type=oneshot
|
||||||
ExecStartPre={{ loki_dir }}/registry-cleaner.sh
|
ExecStartPre={{ loki_dir }}/registry-cleaner.sh
|
||||||
ExecStart={{ loki_dir }}/backup.sh -b
|
ExecStart={{ loki_dir }}/backup.sh -b
|
||||||
|
ExecStartPost={{ loki_dir }}/b2-backup.sh
|
||||||
|
@ -58,27 +58,15 @@
|
|||||||
git:
|
git:
|
||||||
repo: https://github.com/Wojtek242/loki.git
|
repo: https://github.com/Wojtek242/loki.git
|
||||||
dest: "{{ loki_dir }}"
|
dest: "{{ loki_dir }}"
|
||||||
|
update: no
|
||||||
register: loki_git
|
register: loki_git
|
||||||
|
|
||||||
- block:
|
- name: Build containers locally
|
||||||
- name: Update
|
command: make build-all
|
||||||
command: ./update.sh
|
args:
|
||||||
args:
|
chdir: "{{ loki_dir }}"
|
||||||
chdir: "{{ loki_dir }}"
|
|
||||||
|
|
||||||
rescue:
|
|
||||||
- debug:
|
|
||||||
msg: "Failed to pull containers from registry - will build locally"
|
|
||||||
|
|
||||||
- name: Build locally
|
|
||||||
command: make build-all
|
|
||||||
args:
|
|
||||||
chdir: "{{ loki_dir }}"
|
|
||||||
|
|
||||||
when: loki_git is changed
|
when: loki_git is changed
|
||||||
|
|
||||||
# Hosts file must be added after the first update as otherwise the initial
|
|
||||||
# container pull will always fail
|
|
||||||
- name: Add hosts file
|
- name: Add hosts file
|
||||||
template:
|
template:
|
||||||
src: ./etc/hosts.j2
|
src: ./etc/hosts.j2
|
||||||
@ -105,12 +93,22 @@
|
|||||||
# Loki backup service.
|
# Loki backup service.
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
- name: Install duplicity
|
||||||
|
apt:
|
||||||
|
name: duplicity
|
||||||
|
|
||||||
- name: Create GitLab credentials file
|
- name: Create GitLab credentials file
|
||||||
template:
|
template:
|
||||||
src: ./gitlab.cred.j2
|
src: ./gitlab.cred.j2
|
||||||
dest: "{{ loki_dir }}/gitlab.cred"
|
dest: "{{ loki_dir }}/gitlab.cred"
|
||||||
mode: 0644
|
mode: 0644
|
||||||
|
|
||||||
|
- name: Create B2 credentials file
|
||||||
|
template:
|
||||||
|
src: ./b2.cred.j2
|
||||||
|
dest: "{{ loki_dir }}/b2.cred"
|
||||||
|
mode: 0644
|
||||||
|
|
||||||
- name: Install Loki backup service
|
- name: Install Loki backup service
|
||||||
template:
|
template:
|
||||||
src: ./etc/systemd/system/loki-backup.service.j2
|
src: ./etc/systemd/system/loki-backup.service.j2
|
||||||
|
@ -38,3 +38,9 @@ domains:
|
|||||||
loki_dir:
|
loki_dir:
|
||||||
gitlab_username:
|
gitlab_username:
|
||||||
gitlab_access_token:
|
gitlab_access_token:
|
||||||
|
|
||||||
|
# Backblaze setup
|
||||||
|
b2_key_id:
|
||||||
|
b2_app_key:
|
||||||
|
gpg_key_id:
|
||||||
|
gpg_passphrase:
|
||||||
|
22
b2-backup.sh
Normal file
22
b2-backup.sh
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Import all account and GPG variables
|
||||||
|
source ./b2.cred
|
||||||
|
|
||||||
|
# Local directory to backup
|
||||||
|
LOCAL_DIR="/media/usb0/backup"
|
||||||
|
|
||||||
|
# Perform a full backup
|
||||||
|
duplicity full \
|
||||||
|
--encrypt-sign-key $GPG_KEY \
|
||||||
|
${LOCAL_DIR} b2://${B2_ACCOUNT}:${B2_KEY}@${B2_BUCKET}
|
||||||
|
|
||||||
|
# Cleanup failures
|
||||||
|
duplicity cleanup --force \
|
||||||
|
--encrypt-sign-key $GPG_KEY \
|
||||||
|
b2://${B2_ACCOUNT}:${B2_KEY}@${B2_BUCKET}
|
||||||
|
|
||||||
|
# Show collection-status
|
||||||
|
duplicity collection-status \
|
||||||
|
--encrypt-sign-key $GPG_KEY \
|
||||||
|
b2://${B2_ACCOUNT}:${B2_KEY}@${B2_BUCKET}
|
15
backup.sh
15
backup.sh
@ -11,6 +11,8 @@ NC='\033[00m'
|
|||||||
SCRIPT=$(readlink -f $0)
|
SCRIPT=$(readlink -f $0)
|
||||||
DIRNAME=$(dirname $SCRIPT)
|
DIRNAME=$(dirname $SCRIPT)
|
||||||
|
|
||||||
|
BACKUP_DIR="/media/usb0/backup"
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Get the list of volumes.
|
# Get the list of volumes.
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
@ -81,6 +83,15 @@ function backup {
|
|||||||
|
|
||||||
volumes=$1
|
volumes=$1
|
||||||
|
|
||||||
|
# Remove old backup directory
|
||||||
|
if [ ! -d ${BACKUP_DIR} ]; then
|
||||||
|
rm -f ${BACKUP_DIR}/*.tar
|
||||||
|
rmdir ${BACKUP_DIR}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Make sure directory exists
|
||||||
|
mkdir ${BACKUP_DIR}
|
||||||
|
|
||||||
for vol in "${volumes[@]}"
|
for vol in "${volumes[@]}"
|
||||||
do
|
do
|
||||||
echo -e "${CYAN}[${SCRIPT}] Back up ${YELLOW}${vol}${CYAN} volume${NC}"
|
echo -e "${CYAN}[${SCRIPT}] Back up ${YELLOW}${vol}${CYAN} volume${NC}"
|
||||||
@ -88,7 +99,7 @@ function backup {
|
|||||||
set -o xtrace
|
set -o xtrace
|
||||||
docker run --rm \
|
docker run --rm \
|
||||||
-v loki_${vol}:/opt/${vol} \
|
-v loki_${vol}:/opt/${vol} \
|
||||||
-v /media/usb0:/opt/backup \
|
-v ${BACKUP_DIR}:/opt/backup \
|
||||||
debian:stable-slim \
|
debian:stable-slim \
|
||||||
bash -c "cd /opt/${vol} && tar cf /opt/backup/${vol}.tar ."
|
bash -c "cd /opt/${vol} && tar cf /opt/backup/${vol}.tar ."
|
||||||
set +o xtrace
|
set +o xtrace
|
||||||
@ -111,7 +122,7 @@ function restore {
|
|||||||
set -o xtrace
|
set -o xtrace
|
||||||
docker run --rm \
|
docker run --rm \
|
||||||
-v loki_${vol}:/opt/${vol} \
|
-v loki_${vol}:/opt/${vol} \
|
||||||
-v /media/usb0:/opt/backup \
|
-v ${BACKUP_DIR}:/opt/backup \
|
||||||
debian:stable-slim \
|
debian:stable-slim \
|
||||||
bash -c "cd /opt/${vol} && tar xf /opt/backup/${vol}.tar"
|
bash -c "cd /opt/${vol} && tar xf /opt/backup/${vol}.tar"
|
||||||
set +o xtrace
|
set +o xtrace
|
||||||
|
Reference in New Issue
Block a user