c
This commit is contained in:
1 parent
d3d9614825
commit
2e9c775599
34 files changed
+390
-1833
No files matched your search
+16
-16
@@ -1,23 +1,23 @@
|
||||
#!/bin/bash
|
||||
# checkFilestore <UUID> — compare container filestore vs host disk via md5
|
||||
# checkFilestore <CONTAINER_ID> — compare container filestore vs host disk via md5
|
||||
|
||||
check_one() {
|
||||
local UUID="$1"
|
||||
local CONTAINER_ID="$1"
|
||||
|
||||
FILESTORE_HOST="/4server/data/$UUID/odoo/odoo-web-data/filestore/$UUID"
|
||||
FILESTORE_HOST="/4server/data/$CONTAINER_ID/odoo/odoo-web-data/filestore/$CONTAINER_ID"
|
||||
|
||||
[[ -d "$FILESTORE_HOST" ]] || { echo "ERROR: host filestore not found: $FILESTORE_HOST"; exit 2; }
|
||||
doas docker ps --format "{{.Names}}" | grep -q "^${UUID}$" \
|
||||
|| { echo "ERROR: container $UUID is not running"; exit 2; }
|
||||
doas docker ps --format "{{.Names}}" | grep -q "^${CONTAINER_ID}$" \
|
||||
|| { echo "ERROR: container $CONTAINER_ID is not running"; exit 2; }
|
||||
|
||||
# Read data_dir from odoo.conf inside the container, fall back to default
|
||||
DATA_DIR=$(doas docker exec "$UUID" sh -c \
|
||||
DATA_DIR=$(doas docker exec "$CONTAINER_ID" sh -c \
|
||||
'for f in /etc/odoo.conf /etc/odoo/odoo.conf /opt/odoo/etc/odoo.conf; do
|
||||
grep -E "^data_dir" "$f" 2>/dev/null | cut -d= -f2- | xargs && break
|
||||
done')
|
||||
DATA_DIR="${DATA_DIR:-/home/odoo/.local/share/Odoo}"
|
||||
FILESTORE_CONTAINER="$DATA_DIR/filestore/$UUID"
|
||||
MOUNT_HOST=$(doas docker inspect "$UUID" --format '{{json .Mounts}}' \
|
||||
FILESTORE_CONTAINER="$DATA_DIR/filestore/$CONTAINER_ID"
|
||||
MOUNT_HOST=$(doas docker inspect "$CONTAINER_ID" --format '{{json .Mounts}}' \
|
||||
| jq -r --arg dest "$DATA_DIR" '.[] | select(.Type=="bind") | select(.Destination==$dest) | .Source')
|
||||
echo "ODOO USES : $FILESTORE_CONTAINER"
|
||||
echo "Docker maps to : $DATA_DIR"
|
||||
@@ -25,7 +25,7 @@ echo ""
|
||||
echo "Docker mapped to : ${MOUNT_HOST:-<no matching mount found>}"
|
||||
|
||||
echo "Hashing container filestore..."
|
||||
MD5_CONTAINER=$(doas docker exec "$UUID" sh -c \
|
||||
MD5_CONTAINER=$(doas docker exec "$CONTAINER_ID" sh -c \
|
||||
"find $FILESTORE_CONTAINER -type f | sort | xargs md5sum 2>/dev/null | awk '{print \$1}'" | md5sum | cut -d' ' -f1)
|
||||
|
||||
echo "Hashing host filestore..."
|
||||
@@ -41,18 +41,18 @@ if [[ -n "${1-}" ]]; then
|
||||
check_one "$1"
|
||||
else
|
||||
for dir in /4server/data/00*/; do
|
||||
UUID=$(basename "$dir")
|
||||
result=$(check_one "$UUID" 2>&1)
|
||||
CONTAINER_ID=$(basename "$dir")
|
||||
result=$(check_one "$CONTAINER_ID" 2>&1)
|
||||
if echo "$result" | grep -q "OK: filestores match"; then
|
||||
echo "$UUID OK"
|
||||
echo "$CONTAINER_ID OK"
|
||||
elif echo "$result" | grep -q "not running"; then
|
||||
echo "$UUID NOT RUNNING"
|
||||
echo "$CONTAINER_ID NOT RUNNING"
|
||||
elif echo "$result" | grep -q "host filestore not found"; then
|
||||
echo "$UUID NO FILESTORE"
|
||||
echo "$CONTAINER_ID NO FILESTORE"
|
||||
elif echo "$result" | grep -q "cannot query DB"; then
|
||||
echo "$UUID DB ERROR"
|
||||
echo "$CONTAINER_ID DB ERROR"
|
||||
else
|
||||
echo "$UUID MISMATCH"
|
||||
echo "$CONTAINER_ID MISMATCH"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
Reference in new issue
Block a user