65 lines
1.4 KiB
Bash
Executable File
65 lines
1.4 KiB
Bash
Executable File
#! /bin/bash
|
|
set -euo pipefail
|
|
|
|
# wrapper around borgbackup
|
|
# need a borg.conf file - see example file
|
|
# alternate conf file can be passed through BORG_CONF env variable
|
|
# need passwordless ssh access if using remote repo
|
|
|
|
if [ -v BORG_CONF ] ; then
|
|
conf=$BORG_CONF
|
|
else
|
|
conf=$(dirname $0)/borg.conf
|
|
fi
|
|
|
|
if [ ! -f $conf ] ; then
|
|
echo config file not found
|
|
exit 5
|
|
fi
|
|
|
|
source $conf
|
|
|
|
TODAY=$(date "+%Y%m%d")
|
|
|
|
case $1 in
|
|
("list")
|
|
if [ -v 2 ] ; then
|
|
${borg} list ${REPOSITORY}::${2}
|
|
ret=$?
|
|
else
|
|
${borg} list $REPOSITORY
|
|
ret=$?
|
|
fi
|
|
;;
|
|
("check")
|
|
shift
|
|
# if arg: check archive, if not: check whole repo
|
|
if [ $# -eq 1 ] ; then
|
|
target=${REPOSITORY}::${1}
|
|
else
|
|
target=${REPOSITORY}
|
|
fi
|
|
${borg} check -v ${target}
|
|
ret=$?
|
|
;;
|
|
("extract")
|
|
${borg} extract ${REPOSITORY}::${2} ${3}
|
|
ret=$?
|
|
;;
|
|
|
|
(info)
|
|
yesterday=$(date -d "yesterday 13:00 " '+%Y%m%d')
|
|
yesterday_archive=${REPOSITORY}::$(hostname)_${yesterday}
|
|
$borg check -v $yesterday_archive
|
|
ret=$?
|
|
;;
|
|
(*)
|
|
${borg} create --compression lzma,5 $REPOSITORY::$(hostname)_${TODAY} ${src}
|
|
ret=$?
|
|
test -d $(dirname $statusfile) && echo $ret > $statusfile
|
|
if [ $ret -eq 0 ] ; then
|
|
${borg} prune $REPOSITORY --prefix $(hostname)_ --keep-daily=${rotate}
|
|
fi
|
|
;;
|
|
esac
|
|
exit $ret |