@@ -92,33 +92,46 @@ sync_shadow_gateway() {
9292
9393 # Sync /data/on_boot.d/ to shadow (--delete ensures exact mirror)
9494 log " Syncing /data/on_boot.d/ to shadow gateway..."
95- if timeout " $SYNC_TIMEOUT " rsync -avz --delete -e " ssh $SSH_OPTS " \
95+ if timeout " $SYNC_TIMEOUT " rsync -avz --delete --delete-excluded \
96+ --exclude=' *~' --exclude=' *.bak' --exclude=' *.orig' \
97+ --exclude=' *.dpkg-*' --exclude=' .*' \
98+ -e " ssh $SSH_OPTS " \
9699 " ${BOOT_DIR} /" " ${shadow_user} @${shadow_ip} :${BOOT_DIR} /" 2>&1 | tee -a " $LOG_FILE " ; then
97100 log " Successfully synced /data/on_boot.d/ to shadow gateway"
98101 else
99102 log " ERROR: Failed to rsync /data/on_boot.d/ to shadow gateway"
100103 return 1
101104 fi
102105
103- # Ensure unifi-on-boot is installed on shadow
104- if ! timeout " $SYNC_TIMEOUT " ssh $SSH_OPTS " ${shadow_user} @${shadow_ip} " \
105- " dpkg -l unifi-on-boot 2>/dev/null | grep -q '^ii'" 2> /dev/null; then
106- log " Installing unifi-on-boot on shadow gateway..."
106+ # Ensure unifi-on-boot on shadow matches primary version
107+ local primary_version
108+ primary_version=$( dpkg-query -W -f=' ${Version}' unifi-on-boot 2> /dev/null || echo " unknown" )
109+
110+ local shadow_version
111+ shadow_version=$( timeout " $SYNC_TIMEOUT " ssh $SSH_OPTS " ${shadow_user} @${shadow_ip} " \
112+ " dpkg-query -W -f='\$ {Version}' unifi-on-boot 2>/dev/null" 2> /dev/null || echo " not-installed" )
113+
114+ if [ " $primary_version " != " $shadow_version " ]; then
115+ log " Shadow version mismatch (primary: ${primary_version} , shadow: ${shadow_version} ), upgrading..."
107116
108117 local deb_path=" /data/unifi-on-boot/unifi-on-boot.deb"
109118 if [ -f " $deb_path " ]; then
110119 if timeout " $SYNC_TIMEOUT " scp $SSH_OPTS \
111120 " $deb_path " " ${shadow_user} @${shadow_ip} :/tmp/unifi-on-boot.deb" 2> /dev/null && \
112121 timeout " $SYNC_TIMEOUT " ssh $SSH_OPTS " ${shadow_user} @${shadow_ip} " \
113- " dpkg -i /tmp/unifi-on-boot.deb && rm -f /tmp/unifi-on-boot.deb" 2>&1 | tee -a " $LOG_FILE " ; then
114- log " Successfully installed unifi-on-boot on shadow gateway"
122+ " dpkg -i /tmp/unifi-on-boot.deb && \
123+ mkdir -p /data/unifi-on-boot && \
124+ mv /tmp/unifi-on-boot.deb /data/unifi-on-boot/unifi-on-boot.deb" 2>&1 | tee -a " $LOG_FILE " ; then
125+ log " Successfully upgraded unifi-on-boot on shadow gateway to ${primary_version} "
115126 else
116127 log " ERROR: Failed to install unifi-on-boot on shadow gateway"
117128 return 1
118129 fi
119130 else
120131 log " WARNING: No .deb found at ${deb_path} , cannot install unifi-on-boot on shadow"
121132 fi
133+ else
134+ log " Shadow version matches primary (${primary_version} )"
122135 fi
123136
124137 # Run unifi-on-boot on shadow with --skip-shadow to prevent recursion
0 commit comments