This repository has been archived on 2023-02-05. You can view files and clone it, but cannot push or open issues or pull requests.
loki/b2-backup.sh

83 lines
2.7 KiB
Bash
Raw Normal View History

#!/bin/bash
set -ue
2019-12-14 16:51:01 +01:00
2019-12-14 23:15:20 +01:00
CYAN='\033[01;36m'
NC='\033[00m'
2019-12-16 08:30:36 +01:00
if [ ! -t 1 ]; then
2019-12-14 23:15:20 +01:00
CYAN=''
NC=''
fi
SCRIPT=$(readlink -f $0)
DIRNAME=$(dirname $SCRIPT)
2020-04-10 13:29:40 +02:00
# -----------------------------------------------------------------------------
# Run only if it's the first week of the month.
# -----------------------------------------------------------------------------
day_of_month=`date '+%d' | bc`
2020-04-10 13:29:40 +02:00
if (( $day_of_month > 7 ))
then
echo -e "${CYAN}[${SCRIPT}] No B2 backup this week ${NC}"
exit 0
fi
echo -e "${CYAN}[${SCRIPT}] Perform B2 backup ${NC}"
2019-12-14 23:15:20 +01:00
# -----------------------------------------------------------------------------
# Import all account and GPG variables.
# -----------------------------------------------------------------------------
2019-12-14 16:51:01 +01:00
source ./b2.cred
export PASSPHRASE=${GPG_PASSPHRASE}
2019-12-14 16:51:01 +01:00
2019-12-14 23:15:20 +01:00
# -----------------------------------------------------------------------------
# Local directory to backup.
# -----------------------------------------------------------------------------
2019-12-14 16:51:01 +01:00
LOCAL_DIR="/media/usb0/backup"
2019-12-14 23:15:20 +01:00
# -----------------------------------------------------------------------------
2019-12-25 22:15:32 +01:00
# Remove files older than 15 days.
2019-12-14 23:15:20 +01:00
# -----------------------------------------------------------------------------
2020-04-10 13:29:40 +02:00
echo -e "${CYAN}[${SCRIPT}] Remove files older than 32 days ${NC}"
2019-12-14 23:15:20 +01:00
2020-04-10 13:29:40 +02:00
duplicity remove-older-than 32D --force \
2019-12-14 23:04:28 +01:00
--encrypt-sign-key $GPG_KEY \
b2://${B2_ACCOUNT}:${B2_KEY}@${B2_BUCKET}
2019-12-14 23:15:20 +01:00
# -----------------------------------------------------------------------------
# Perform a full backup.
# -----------------------------------------------------------------------------
echo -e "${CYAN}[${SCRIPT}] Perform a full backup ${NC}"
2019-12-14 16:51:01 +01:00
duplicity full \
--encrypt-sign-key $GPG_KEY \
${LOCAL_DIR} b2://${B2_ACCOUNT}:${B2_KEY}@${B2_BUCKET}
2019-12-14 23:15:20 +01:00
# -----------------------------------------------------------------------------
# Clean up failures.
# -----------------------------------------------------------------------------
echo -e "${CYAN}[${SCRIPT}] Clean up failures ${NC}"
2019-12-14 16:51:01 +01:00
duplicity cleanup --force \
--encrypt-sign-key $GPG_KEY \
b2://${B2_ACCOUNT}:${B2_KEY}@${B2_BUCKET}
2019-12-14 23:15:20 +01:00
# -----------------------------------------------------------------------------
# Show collection status.
# -----------------------------------------------------------------------------
echo -e "${CYAN}[${SCRIPT}] Show collection status ${NC}"
2019-12-14 16:51:01 +01:00
duplicity collection-status \
--encrypt-sign-key $GPG_KEY \
b2://${B2_ACCOUNT}:${B2_KEY}@${B2_BUCKET}
2019-12-14 23:15:20 +01:00
# -----------------------------------------------------------------------------
# Unset the GPG passphrase.
# -----------------------------------------------------------------------------
unset PASSPHRASE