jean-cloud-services/services/backup-borg-client/script-sauvegarde.sh

50 lines
1.3 KiB
Bash
Raw Permalink Normal View History

2024-02-22 00:44:24 +00:00
#!/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