slim down
This commit is contained in:
62
restic/.bin/restic-backup
Executable file
62
restic/.bin/restic-backup
Executable file
@@ -0,0 +1,62 @@
|
|||||||
|
#!/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..."
|
||||||
|
restic self-update
|
||||||
|
info "Done"
|
||||||
|
|
||||||
|
read_config
|
||||||
|
|
||||||
|
#restic -r ${RESTIC_REPOSITORY} unlock
|
||||||
|
if [[ $1 == 'prune' ]]; then
|
||||||
|
info "Pruning snapshots..."
|
||||||
|
restic --cache-dir ${CACHE_DIR} -r ${RESTIC_REPOSITORY} prune --max-unused 0
|
||||||
|
info "Done"
|
||||||
|
else
|
||||||
|
info "Starting backup..."
|
||||||
|
restic --cache-dir ${CACHE_DIR} -r ${RESTIC_REPOSITORY} backup ${BACKUP_PATHS} \
|
||||||
|
--exclude-file ${EXCLUDES_FILE}
|
||||||
|
info "Done"
|
||||||
|
|
||||||
|
info "Forgetting snapshots..."
|
||||||
|
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
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
. $HOME/.bin/restic_common
|
|
||||||
export RESTIC_PASSWORD="${RESTIC_PASSWORD}"
|
|
||||||
export PATH="$HOME/.local/bin:$PATH"
|
|
||||||
|
|
||||||
info "Starting backup"
|
|
||||||
restic -r ${RESTIC_REPOSITORY} unlock
|
|
||||||
restic --cache-dir ${CACHE_DIR} -r ${RESTIC_REPOSITORY} backup ${BACKUP_PATHS} --exclude ${BACKUP_EXCLUDES}
|
|
||||||
|
|
||||||
info "Forgetting snapshots"
|
|
||||||
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}
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
read_config() {
|
|
||||||
# variables
|
|
||||||
|
|
||||||
#CACHE_DIR="$HOME/.cache/restic"
|
|
||||||
#BACKUP_PATHS="/etc /home/docker/volumes /root"
|
|
||||||
#BACKUP_EXCLUDES="-e /home/docker/volumes/syncthing"
|
|
||||||
#KEEP_HOURS=96
|
|
||||||
#KEEP_DAYS=31
|
|
||||||
#KEEP_WEEKS=8
|
|
||||||
#KEEP_MONTHS=12
|
|
||||||
#KEEP_YEARS=3
|
|
||||||
#RESTIC_PASSWORD="PASSWORD"
|
|
||||||
#RESTIC_REPOSITORY="sftp://foo@${BACKUP_SERVER}:22//home/bar"
|
|
||||||
# or for b2
|
|
||||||
#RESTIC_REPOSITORY="b2:backup"
|
|
||||||
#B2_ACCOUNT_ID="ID"
|
|
||||||
#B2_ACCOUNT_KEY="KEY"
|
|
||||||
|
|
||||||
if [[ ! -f "/etc/restic/env" && ! -f "$HOME/.config/restic/env" ]]; then
|
|
||||||
echo "no config provided"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
. $HOME/.config/restic/env 2> /dev/null || . /etc/restic/env 2> /dev/null
|
|
||||||
}
|
|
||||||
|
|
||||||
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
|
|
||||||
echo "Done"
|
|
||||||
|
|
||||||
info "Updating restic..."
|
|
||||||
restic self-update
|
|
||||||
echo "Done"
|
|
||||||
|
|
||||||
info "60s delay (in case we just woke up)..."
|
|
||||||
sleep 60
|
|
||||||
echo "Done"
|
|
||||||
|
|
||||||
read_config
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
. $HOME/.bin/restic_common
|
|
||||||
export RESTIC_PASSWORD="${RESTIC_PASSWORD}"
|
|
||||||
export PATH="$HOME/.local/bin:$PATH"
|
|
||||||
|
|
||||||
info "Pruning snapshots"
|
|
||||||
restic --cache-dir ${CACHE_DIR} -r ${RESTIC_REPOSITORY} prune
|
|
||||||
@@ -1,12 +1,10 @@
|
|||||||
[Unit]
|
[Unit]
|
||||||
Description=restic backup
|
Description=restic backup
|
||||||
Before=restic-prune.service
|
|
||||||
Wants=network-online.target
|
|
||||||
After=network-online.target
|
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=oneshot
|
Type=oneshot
|
||||||
ExecStart=%h/.bin/restic_backup
|
ExecStartPre=/usr/bin/nm-online -q
|
||||||
|
ExecStart=%h/.bin/restic-backup
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ Description=restic backup
|
|||||||
[Timer]
|
[Timer]
|
||||||
Persistent=true
|
Persistent=true
|
||||||
OnCalendar=hourly
|
OnCalendar=hourly
|
||||||
Unit=restic-backup.service
|
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=timers.target
|
WantedBy=timers.target
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=restic prune snapshots
|
|
||||||
After=restic-backup.service
|
|
||||||
Wants=network-online.target
|
|
||||||
After=network-online.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=oneshot
|
|
||||||
ExecStart=%h/.bin/restic_prune
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=restic prune snapshots
|
|
||||||
|
|
||||||
[Timer]
|
|
||||||
Persistent=true
|
|
||||||
OnCalendar=weekly
|
|
||||||
Unit=restic-prune.service
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=timers.target
|
|
||||||
Reference in New Issue
Block a user