51 lines
1.1 KiB
Bash
51 lines
1.1 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
# === CONFIG ===
|
||
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
|
|
DATA_DIR="${SCRIPT_DIR}/trilium-data"
|
||
|
|
BACKUP_DIR="/backup/Trilium"
|
||
|
|
KEEP=5
|
||
|
|
|
||
|
|
cd "$SCRIPT_DIR"
|
||
|
|
|
||
|
|
# === Ensure backup path exists ===
|
||
|
|
mkdir -p "$BACKUP_DIR"
|
||
|
|
|
||
|
|
# === Stop container ===
|
||
|
|
echo "Stopping Trilium container..."
|
||
|
|
docker compose down
|
||
|
|
|
||
|
|
# === Backup ===
|
||
|
|
TIMESTAMP="$(date +"%Y-%m-%d_%H-%M-%S")"
|
||
|
|
BACKUP_FILE="${BACKUP_DIR}/trilium_backup_${TIMESTAMP}.tar.gz"
|
||
|
|
|
||
|
|
echo "Backing up data to: $BACKUP_FILE"
|
||
|
|
|
||
|
|
tar -czf "$BACKUP_FILE" \
|
||
|
|
trilium-data \
|
||
|
|
docker-compose.yml
|
||
|
|
|
||
|
|
echo "Backup completed."
|
||
|
|
|
||
|
|
# === Start container again ===
|
||
|
|
echo "Starting Trilium back up..."
|
||
|
|
docker compose up -d
|
||
|
|
echo "Trilium started."
|
||
|
|
|
||
|
|
# === Rotate backups ===
|
||
|
|
echo "Cleaning old backups (keeping last ${KEEP})..."
|
||
|
|
shopt -s nullglob
|
||
|
|
backups=( $(ls -1t "$BACKUP_DIR"/trilium_backup_*.tar.gz) )
|
||
|
|
|
||
|
|
if [ "${#backups[@]}" -gt "$KEEP" ]; then
|
||
|
|
for old in "${backups[@]:$KEEP}"; do
|
||
|
|
echo "Removing old backup: $old"
|
||
|
|
rm -f "$old"
|
||
|
|
done
|
||
|
|
else
|
||
|
|
echo "No old backups to remove."
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "Backup routine complete ✔"
|