log rotate
This commit is contained in:
Executable
+30
@@ -0,0 +1,30 @@
|
||||
#!/bin/bash
|
||||
# rotateLogs — rotate odoo.log for all UUID containers, keep 4 weeks
|
||||
|
||||
RETENTION_DAYS=28
|
||||
|
||||
for log in /4server/data/00*/logs/odoo.log; do
|
||||
[[ -f "$log" ]] || continue
|
||||
DIR=$(dirname "$log")
|
||||
UUID=$(basename "$(dirname "$DIR")")
|
||||
|
||||
STAMP=$(date '+%Y-%m-%d_%H-%M')
|
||||
ARCHIVE="$DIR/odoo.log.$STAMP"
|
||||
|
||||
# Copy preserving permissions, then truncate the live log
|
||||
PERMS=$(stat -c '%a' "$log")
|
||||
OWNER=$(stat -c '%U:%G' "$log")
|
||||
cp "$log" "$ARCHIVE"
|
||||
: > "$log"
|
||||
|
||||
# Compress the archive, restore original ownership and permissions
|
||||
gzip "$ARCHIVE"
|
||||
chmod "$PERMS" "${ARCHIVE}.gz"
|
||||
chown "$OWNER" "${ARCHIVE}.gz"
|
||||
|
||||
echo "$UUID rotated -> $(basename "${ARCHIVE}.gz")"
|
||||
|
||||
# Delete rotated logs older than 4 weeks
|
||||
find "$DIR" -name 'odoo.log.*.gz' -mtime +$RETENTION_DAYS -exec rm -f {} \; \
|
||||
-exec echo "$UUID deleted: {}" \;
|
||||
done
|
||||
Reference in New Issue
Block a user