50 lines
1.3 KiB
Bash
50 lines
1.3 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
. "$( cd -P "$( dirname "$0" )" && pwd )/.env"
|
||
|
|
||
|
server="$1"
|
||
|
failed=""
|
||
|
|
||
|
while IFS=';' read -r id username service target ; do
|
||
|
if [ ! -d "/data/$service" ] ; then
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
echo " = = ===== = ===== $service ===== = ===== = ="
|
||
|
|
||
|
# Create passfile if not exists
|
||
|
mkdir -p "$DATA_DIR/passphrase"
|
||
|
passfile="$DATA_DIR/passphrase/$service"
|
||
|
if [ ! -e "$passfile" ] ; then
|
||
|
LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c 257 > "$passfile"
|
||
|
fi
|
||
|
|
||
|
# Borg variables
|
||
|
export BORG_REPO="backup-borg-server@127.0.0.1:/data/backup-borg-server/backups/$(hostname)/$service"
|
||
|
export BORG_PASSPHRASE="$(cat "$passfile")"
|
||
|
RSH='ssh -o StrictHostKeyChecking=no -p 12345'
|
||
|
|
||
|
# Get specific backup files
|
||
|
cd "/data/$service"
|
||
|
BACKUP_LIST="$(ls -A)"
|
||
|
if [ -x "/docker/$service/backup_list.sh" ] ; then
|
||
|
BACKUP_LIST="$(/docker/$service/backup_list.sh)"
|
||
|
fi
|
||
|
if [ -z "$BACKUP_LIST" ] ; then
|
||
|
continue
|
||
|
fi
|
||
|
echo "--------------> $BACKUP_LIST"
|
||
|
|
||
|
borg init --rsh "$RSH" --encryption repokey || true
|
||
|
borg create --rsh "$RSH" --list --filter=AMCE --stats --show-rc "::$(date +%Y%m%d%H%M)" $BACKUP_LIST
|
||
|
if [ "$?" -ne 0 ] ; then
|
||
|
failed="$failed $service"
|
||
|
fi
|
||
|
|
||
|
done < <(grep -v '^#' /docker/services.csv)
|
||
|
|
||
|
if [ -n "$failed" ] ; then
|
||
|
echo "FAILED"
|
||
|
echo "$failed"
|
||
|
fi
|