diff --git a/21-Server Reference/homelab/stacks/n8n/JW_Backup/JW_Backup_Sync_Engine.sh b/21-Server Reference/homelab/stacks/n8n/JW_Backup/JW_Backup_Sync_Engine.sh new file mode 100644 index 0000000..79c4a0b --- /dev/null +++ b/21-Server Reference/homelab/stacks/n8n/JW_Backup/JW_Backup_Sync_Engine.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +# --- CONFIG --- +TARGET_DIR="/home/artanis/Inanis_Vault/JW_Backups" +MASTER_NAME="master.jwlibrary" +LIB_SOURCE="/usr/local/lib/libjwlCore.so" + +# 1. Environment & Pathing +export PATH=$PATH:/usr/local/bin:/usr/bin:/bin +export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH +cd "$TARGET_DIR" || exit 1 + +# 2. Update Repo +git pull origin main + +# 3. Rename messy filenames (Spaces/Brackets) +shopt -s nullglob +counter=1 +for f in *.jwlibrary; do + if [[ "$f" != "$MASTER_NAME" && "$f" != incoming_* ]]; then + mv "$f" "incoming_$counter.jwlibrary" + ((counter++)) + fi +done +shopt -u nullglob + +# 4. Identify standardized files +INCOMING_FILES=$(ls incoming_*.jwlibrary 2>/dev/null) + +if [ -z "$INCOMING_FILES" ]; then + echo "No new device backups found. Exiting." + exit 0 +fi + +# 5. Satisfy Binary & Merge +ln -sf "$LIB_SOURCE" ./libjwlCore.so +FILE_COUNT=$(echo "$MASTER_NAME $INCOMING_FILES" | wc -w) + +if [ -f "$MASTER_NAME" ] && [ "$FILE_COUNT" -gt 1 ]; then + jwlFusion -o:"master_tmp" "$MASTER_NAME" $INCOMING_FILES +elif [ ! -f "$MASTER_NAME" ] && [ $(echo "$INCOMING_FILES" | wc -w) -gt 1 ]; then + jwlFusion -o:"master_tmp" $INCOMING_FILES +else + # Recovery: If only 1 file exists and no master, promote it + cp $INCOMING_FILES "$MASTER_NAME" + echo "Promoted single file to master." +fi + +# 6. Cleanup & Finalize +rm -f ./libjwlCore.so incoming_*.jwlibrary + +if [ -f "master_tmp.jwlibrary" ]; then + mv "master_tmp.jwlibrary" "$MASTER_NAME" +fi + +# 7. Git Push +if git status --porcelain | grep -q .; then + git add -A + git commit -m "Automated Sync: $(date +'%Y-%m-%d %H:%M')" + git push origin main + echo "Sync successful. Master updated and pushed." +else + echo "No changes detected in master." +fi