2025-03-03 15:18:16 +01:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
|
|
|
# Define variables from environment
|
2025-03-03 21:16:45 +01:00
|
|
|
REPO=${BORG_REPO:-/backup}
|
|
|
|
BORG_PASSPHRASE=$(getpassphrase)
|
|
|
|
SOURCE=${BORG_SOURCE:-/source}
|
2025-03-03 15:18:16 +01:00
|
|
|
COMPRESSION=${BORG_COMPRESS:-zstd}
|
|
|
|
PRUNE_KEEP_DAILY=${BORG_PRUNE_KEEP_DAILY:-7}
|
|
|
|
PRUNE_KEEP_WEEKLY=${BORG_PRUNE_KEEP_WEEKLY:-4}
|
|
|
|
PRUNE_KEEP_MONTHLY=${BORG_PRUNE_KEEP_MONTHLY:-6}
|
|
|
|
EXCLUDE_PATTERNS=${BORG_EXCLUDE_PATTERNS:-}
|
|
|
|
CHECK_LAST=${BORG_CHECK_LAST}
|
|
|
|
|
2025-03-03 21:16:45 +01:00
|
|
|
BAK_ARGS="--compression $COMPRESSION"
|
2025-03-03 15:18:16 +01:00
|
|
|
|
2025-03-03 21:16:45 +01:00
|
|
|
if [ -z "$BORG_PASSPHRASE" ]; then
|
|
|
|
echo "Could not found passphrase"
|
2025-03-03 15:18:16 +01:00
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2025-03-03 21:16:45 +01:00
|
|
|
if [ -n "$EXCLUDE_PATTERNS" ]; then
|
|
|
|
BAK_ARGS="$BAK_ARGS --exclude $EXCLUDE_PATTERNS"
|
2025-03-03 15:18:16 +01:00
|
|
|
fi
|
|
|
|
|
|
|
|
# Borg backup command
|
|
|
|
borg create --stats $BAK_ARGS \
|
2025-03-03 21:16:45 +01:00
|
|
|
$REPO::$(date +%Y-%m-%d) $SOURCE
|
2025-03-03 15:18:16 +01:00
|
|
|
|
|
|
|
# Borg prune command
|
|
|
|
|
|
|
|
echo "Creating backup..."
|
|
|
|
borg prune --list $REPO --keep-daily=$PRUNE_KEEP_DAILY --keep-weekly=$PRUNE_KEEP_WEEKLY --keep-monthly=$PRUNE_KEEP_MONTHLY
|
|
|
|
|
|
|
|
# Borg check command
|
|
|
|
CHECK_ARGS=""
|
|
|
|
|
2025-03-03 21:16:45 +01:00
|
|
|
if [ -n "$CHECK_LAST" ]; then
|
|
|
|
CHECK_ARGS="$CHECK_ARGS --last $CHECK_LAST"
|
2025-03-03 15:18:16 +01:00
|
|
|
fi
|
2025-03-03 21:16:45 +01:00
|
|
|
if [ -n "$CHECK_DATA" ]; then
|
|
|
|
CHECK_ARGS="$CHECK_ARGS --verify-data"
|
2025-03-03 15:18:16 +01:00
|
|
|
fi
|
|
|
|
|
|
|
|
borg check $CHECK_ARGS $REPO
|