Add initial source
parent
f34788ea60
commit
e0ca054f3e
|
|
@ -0,0 +1,67 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
MODE="$1"
|
||||||
|
CONFIG="/etc/borgwrapper/config.sh"
|
||||||
|
|
||||||
|
|
||||||
|
print_usage () {
|
||||||
|
echo "Usage: borgwrapper.sh MODE"
|
||||||
|
echo ""
|
||||||
|
echo "arguments:"
|
||||||
|
echo " MODE backup|verify|unlock"
|
||||||
|
}
|
||||||
|
|
||||||
|
borg_backup () {
|
||||||
|
EXCLUDE_CMD=()
|
||||||
|
|
||||||
|
for EXCLUDE in ${EXCLUDES[@]}; do
|
||||||
|
EXCLUDE_CMD+=( --exclude "$EXCLUDE" )
|
||||||
|
done
|
||||||
|
|
||||||
|
# Backup all of /home and /var/www except a few
|
||||||
|
# excluded directories
|
||||||
|
$BORG create --info --stats \
|
||||||
|
--compression lz4 \
|
||||||
|
--numeric-owner \
|
||||||
|
"${REPO}"::"$(hostname)-$(date -u +'%Y%m%dT%H%M%SZ')" \
|
||||||
|
${PATHS[@]} \
|
||||||
|
${EXCLUDE_CMD[@]}
|
||||||
|
}
|
||||||
|
|
||||||
|
borg_prune () {
|
||||||
|
# Use the `prune` subcommand to maintain 7 daily, 4 weekly and 6 monthly
|
||||||
|
# archives of THIS machine. --prefix `hostname`- is very important to
|
||||||
|
# limit prune's operation to this machine's archives and not apply to
|
||||||
|
# other machine's archives also.
|
||||||
|
$BORG prune --info --stats --list \
|
||||||
|
--prefix "$(hostname)-" \
|
||||||
|
--keep-daily=$KEEP_DAILY \
|
||||||
|
--keep-weekly=$KEEP_WEEKLY \
|
||||||
|
--keep-monthly=$KEEP_MONTHLY \
|
||||||
|
--keep-yearly=$KEEP_YEARLY \
|
||||||
|
"${REPO}"
|
||||||
|
}
|
||||||
|
|
||||||
|
borg_verify () {
|
||||||
|
$BORG check --show-rc "${REPO}"
|
||||||
|
}
|
||||||
|
|
||||||
|
borg_unlock () {
|
||||||
|
# Use if borg backup is not shut down cleanly
|
||||||
|
$BORG break-lock "${REPO}"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
source "$CONFIG" || exit 1
|
||||||
|
export BORG_PASSPHRASE
|
||||||
|
|
||||||
|
if [[ $MODE == "backup" ]]; then
|
||||||
|
borg_backup
|
||||||
|
borg_prune
|
||||||
|
elif [[ $MODE == "verify" ]]; then
|
||||||
|
borg_verify
|
||||||
|
elif [[ $MODE == "unlock" ]]; then
|
||||||
|
borg_unlock
|
||||||
|
else
|
||||||
|
print_usage
|
||||||
|
fi
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
BORG="/usr/bin/borg"
|
||||||
|
REPO="user@reposerver:/srv/borg/hostname"
|
||||||
|
BORG_PASSPHRASE="longandcomplexpassphrase"
|
||||||
|
PATHS=(
|
||||||
|
"/etc"
|
||||||
|
"/home"
|
||||||
|
"/root"
|
||||||
|
"/srv"
|
||||||
|
"/usr/local"
|
||||||
|
"/var/spool/cron/crontabs"
|
||||||
|
)
|
||||||
|
EXCLUDES=(
|
||||||
|
"sh:/home/**/.cache"
|
||||||
|
"/root/.cache"
|
||||||
|
"*.pyc"
|
||||||
|
)
|
||||||
|
KEEP_DAILY=31
|
||||||
|
KEEP_WEEKLY=0
|
||||||
|
KEEP_MONTHLY=24
|
||||||
|
KEEP_YEARLY=5
|
||||||
Loading…
Reference in New Issue