c
This commit is contained in:
1 parent
d3d9614825
commit
2e9c775599
34 files changed
+390
-1833
No files matched your search
+18
-12
@@ -4,21 +4,27 @@
|
||||
|
||||
set -euo pipefail # Fail on error, undefined variables, and pipe errors
|
||||
|
||||
log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*"; }
|
||||
# Load helper functions (provides log/warn/die)
|
||||
_self="$(realpath "${BASH_SOURCE[0]:-$0}")"; SBIN_ROOT="$(dirname "$(dirname "$_self")")" # parent of backup/
|
||||
source "$SBIN_ROOT/helpers"
|
||||
|
||||
# Load helper functions
|
||||
source /4server/sbin/helpers
|
||||
# Load SOFTWARE and DB_NAME from container.env
|
||||
load_container_config "$CONTAINER_ID"
|
||||
|
||||
# Get contract info (also exports ODOO_DB_PASSWORD via helpers)
|
||||
get_contract_info
|
||||
|
||||
log "UUID: $UUID"
|
||||
# DB_NAME is the postgres database name (may differ from CONTAINER_ID for migrated containers)
|
||||
DB_NAME="${DB_NAME:-$CONTAINER_ID}"
|
||||
|
||||
log "CONTAINER_ID: $CONTAINER_ID"
|
||||
log "DB_NAME: $DB_NAME"
|
||||
log "Retention: daily 14d, weekly 12w"
|
||||
log "DB host: $POSTGRES_HOST"
|
||||
|
||||
# Build paths
|
||||
FILENAME="$(date +"%Y%m%d_%H%M").zip"
|
||||
BACKUP_DIR="/BACKUP/$UUID"
|
||||
BACKUP_DIR="/BACKUP/$CONTAINER_ID"
|
||||
BB_DIR="$BACKUP_DIR/bb"
|
||||
|
||||
# Ensure backup directories exist (requires elevated permissions like other ops)
|
||||
@@ -27,12 +33,12 @@ doas mkdir -p "$BB_DIR"
|
||||
|
||||
# Perform database dump inside the container
|
||||
log "Starting dump -> $BACKUP_DIR/$FILENAME"
|
||||
doas docker exec "$UUID" odoo db \
|
||||
doas docker exec "$CONTAINER_ID" odoo db \
|
||||
--db_host "$POSTGRES_HOST" \
|
||||
-r "$UUID" \
|
||||
-r "$DB_NAME" \
|
||||
-w "$ODOO_DB_PASSWORD" \
|
||||
--data-dir /home/odoo/.local/share/Odoo/ \
|
||||
dump "$UUID" "/mnt/backup/$FILENAME"
|
||||
dump "$DB_NAME" "/mnt/backup/$FILENAME"
|
||||
|
||||
log "Dump complete: $(doas du -sh "$BACKUP_DIR/$FILENAME" | cut -f1)"
|
||||
|
||||
@@ -40,7 +46,7 @@ log "Dump complete: $(doas du -sh "$BACKUP_DIR/$FILENAME" | cut -f1)"
|
||||
doas chmod 666 "$BACKUP_DIR"/[0-9]*.zip
|
||||
|
||||
# Hand ownership back to odoo inside the container
|
||||
doas docker exec "$UUID" chown odoo:odoo -R /mnt/backup
|
||||
doas docker exec "$CONTAINER_ID" chown odoo:odoo -R /mnt/backup
|
||||
|
||||
# Update the current.zip symlink inside bb/ pointing at the backup just created.
|
||||
# Target is relative (../$FILENAME) because the symlink lives one level deeper
|
||||
@@ -97,10 +103,10 @@ done
|
||||
log "Backup finished successfully ."
|
||||
|
||||
# --- Custom modules snapshot ---
|
||||
# Archive /4server/data/$UUID/git-server/repos/local/custom/ into .current.tar.gz.
|
||||
# Archive /4server/data/$CONTAINER_ID/git-server/repos/local/custom/ into .current.tar.gz.
|
||||
# Rebuilt only when at least one file inside is newer than the existing archive,
|
||||
# so borg backup dedup sees an identical blob on unchanged runs.
|
||||
CUSTOM_SRC="/4server/data/$UUID/git-server/repos/local/custom"
|
||||
CUSTOM_SRC="/4server/data/$CONTAINER_ID/git-server/repos/local/custom"
|
||||
CUSTOM_ARCHIVE="$BB_DIR/current_modules.tar.gz"
|
||||
|
||||
if [ ! -d "$CUSTOM_SRC" ]; then
|
||||
@@ -110,7 +116,7 @@ elif [ ! -f "$CUSTOM_ARCHIVE" ] || \
|
||||
log "Changes detected in custom modules — rebuilding current.tar.gz"
|
||||
# Write to a temp file first; mv is atomic, so borg never sees a partial archive
|
||||
doas tar -czf "${CUSTOM_ARCHIVE}.tmp" \
|
||||
-C "/4server/data/$UUID/git-server/repos/local" custom
|
||||
-C "/4server/data/$CONTAINER_ID/git-server/repos/local" custom
|
||||
doas mv "${CUSTOM_ARCHIVE}.tmp" "$CUSTOM_ARCHIVE"
|
||||
log ".current.tar.gz updated: $(doas du -sh "$CUSTOM_ARCHIVE" | cut -f1)"
|
||||
else
|
||||
|
||||
Reference in new issue
Block a user