update restic
This commit is contained in:
70
bin/restic-backup
Executable file
70
bin/restic-backup
Executable file
@@ -0,0 +1,70 @@
|
||||
#!/bin/bash
|
||||
|
||||
read_config() {
|
||||
# variables
|
||||
#CACHE_DIR="$HOME/.cache/restic"
|
||||
#BACKUP_PATHS="/etc /home/docker/volumes /root"
|
||||
#EXCLUDES_FILE="$HOME/.config/restic/excludes"
|
||||
#KEEP_HOURS=96
|
||||
#KEEP_DAYS=31
|
||||
#KEEP_WEEKS=8
|
||||
#KEEP_MONTHS=12
|
||||
#KEEP_YEARS=3
|
||||
#RESTIC_PASSWORD="PASSWORD"
|
||||
#RESTIC_REPOSITORY="sftp://foo@192.168.0.1:22//home/bar"
|
||||
# or for b2
|
||||
#RESTIC_REPOSITORY="b2:backup"
|
||||
#B2_ACCOUNT_ID="ID"
|
||||
#B2_ACCOUNT_KEY="KEY"
|
||||
|
||||
if [[ ! -f "$HOME/.config/restic/env" && ! -f "/etc/restic/env" ]]; then
|
||||
echo "no config provided"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
. $HOME/.config/restic/env 2> /dev/null || . /etc/restic/env 2> /dev/null
|
||||
export RESTIC_PASSWORD="${RESTIC_PASSWORD}"
|
||||
}
|
||||
|
||||
info() { printf "\n\e[1m%s\e[0m\n" "$*" >&2; }
|
||||
|
||||
info "Testing if restic is already running..."
|
||||
if pgrep -x "restic" &> /dev/null; then
|
||||
echo "-> Restic is already runnning"
|
||||
exit 1
|
||||
fi
|
||||
info "Done"
|
||||
|
||||
info "Updating restic..."
|
||||
$HOME/.local/bin/restic self-update
|
||||
info "Done"
|
||||
|
||||
read_config
|
||||
|
||||
restic -r ${RESTIC_REPOSITORY} unlock
|
||||
if [[ $1 == 'prune' ]]; then
|
||||
info "Pruning snapshots..."
|
||||
$HOME/.local/bin/restic --cache-dir ${CACHE_DIR} -r ${RESTIC_REPOSITORY} prune --max-unused 0
|
||||
info "Done"
|
||||
|
||||
info "Checking repository..."
|
||||
$HOME/.local/bin/restic -r ${RESTIC_REPOSITORY} check
|
||||
info "Done"
|
||||
else
|
||||
if ! eval which snapper 2> /dev/null; then
|
||||
# fallback
|
||||
BACKUP_PATHS="/home/flexo"
|
||||
fi
|
||||
|
||||
info "Starting backup..."
|
||||
$HOME/.local/bin/restic --cache-dir ${CACHE_DIR} -r ${RESTIC_REPOSITORY} backup ${BACKUP_PATHS} \
|
||||
--exclude-file ${EXCLUDES_FILE}
|
||||
info "Done"
|
||||
|
||||
info "Forgetting snapshots..."
|
||||
$HOME/.local/bin/restic --cache-dir ${CACHE_DIR} -r ${RESTIC_REPOSITORY} forget \
|
||||
--keep-hourly ${KEEP_HOURS} --keep-daily ${KEEP_DAYS} \
|
||||
--keep-weekly ${KEEP_WEEKS} --keep-monthly ${KEEP_WEEKS} \
|
||||
--keep-yearly ${KEEP_YEARS} #--prune
|
||||
info "Done"
|
||||
fi
|
||||
Reference in New Issue
Block a user