Trilium/backup-trillium.sh

51 lines
1.1 KiB
Bash
Raw Normal View History

2025-11-27 17:34:37 +00:00
#!/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 ✔"