Built-in Backup reports success while silently dropping ~36% of files — and the process itself won’t stop when told to
I’ve spent the better part of a day tracing a data-protection issue with the built-in Backup app on a fresh ZimaBoard 2 / ZimaOS install, and I think this deserves real attention from the dev team — not because it’s an edge case, but because the failure mode is specifically that the UI tells you everything is fine when it isn’t. That’s the worst kind of bug for a backup tool to have.
Posting this in detail so it’s reproducible, not just “it’s broken.”
Setup
-
ZimaBoard 2, fresh ZimaOS installation (not migrated from another system)
-
Source: a BTRFS RAID1 pool (2× 2TB SSD) mounted at
/media/ZIMASSD, used as the AppData/storage pool for several self-hosted apps including Nextcloud -
Destination: a Synology NAS, connected via CIFS/SMB (
vers=3.1.1), configured through the Backup app’s UI -
[ZimaOS version — check Settings > About and fill in before posting]
Issue 1: The source file count is wrong by ~36%
The Backup UI reported the source (Van) as 225,105 files. Running a live count on the actual source directory told a different story:
$ find /media/ZIMASSD -type f 2>/dev/null | wc -l
351334
That’s 126,229 files — over a third of the actual data — that the tool never even counted as needing backup, let alone attempted to copy. This wasn’t a mid-scan snapshot difference; the UI figure stayed fixed at 225,105 across multiple checks over more than an hour.
This almost certainly explains a second symptom I noticed independently before digging into the numbers: specific folders (in my case, my Nextcloud data directory and its own backup-archive folder) appeared completely absent from the destination, despite normal read permissions and no errors shown anywhere. If the initial source scan never counted their contents in the first place, of course they’d never show up on the far side — there’d be no error to show, because as far as the job’s file list was concerned, those files simply didn’t exist.
Issue 2: The backup process doesn’t stop when it finishes — and keeps running indefinitely
At one point the UI showed a completed run (Laatste [timestamp], matching file counts on both source and destination). Independently checking the actual process told a different story:
$ ps -p 1672 -o pid,etime,pcpu,cmd
PID ELAPSED %CPU CMD
1672 03:25:39 13.8 /usr/bin/icewhale-files-backup
Still running, 3.5 hours after the UI’s own recorded completion time, still consuming CPU. Checking actual I/O activity confirmed it wasn’t doing a second useful pass either — it had simply stopped moving data and never exited:
$ sudo cat /proc/1672/io | grep bytes
read_bytes: 326670520320
write_bytes: 265061490688
[... 10 seconds later, identical numbers ...]
Zero I/O change over 10+ seconds. Fully stalled, indefinitely, while the UI displayed a normal “completed” state throughout — worse, the task menu still showed a Start button rather than any indication something was still active, so there was no visual cue anything was wrong at all.
Issue 3: The UI’s own Stop button doesn’t actually stop the process
On a later run, I clicked Stop from the task’s context menu. Checked the process immediately after:
$ ps aux | grep -i files-backup
root 679753 29.2 0.2 2211336 48116 ? Ssl 12:08 3:54 /usr/bin/icewhale-files-backup
Still alive, still actively burning CPU, well after clicking Stop. The only way to actually terminate it was going around the UI entirely:
$ sudo systemctl stop icewhale-files-backup
That worked immediately and cleanly. So the underlying service is controllable — the UI control just isn’t wired to it reliably, or isn’t working at all.
Issue 4: Progress indicators are unreliable mid-run
During one run, the displayed transfer speed simply disappeared from the UI, and the file/size counters appeared to reset toward zero rather than continuing from where they were. I couldn’t get a clean explanation for this behavior from the UI itself — no error, no status change, just a discontinuity in what was being displayed.
Why this matters
Individually, any one of these might be dismissed as cosmetic. Together, they add up to: a backup tool that reports success on runs that didn’t finish, undercounts what it’s protecting by a third, can’t be stopped through its own controls, and gives no trustworthy live signal of what it’s actually doing. For a feature whose entire job is “tell me my data is safe,” that’s a serious gap — someone relying on the green checkmark here could go a long time without realizing a third of their data was never being backed up at all.
Related reports already on GitHub
This doesn’t appear to be an isolated case — several existing issues describe overlapping symptoms on the same icewhale-files-backup component:
-
#259 — backup process hangs and pins CPU after being removed from the UI, requiring manual cleanup via SSH
-
#326 — similar stuck-process behavior after deleting a backup task, requiring a manual service restart
-
#338 — hidden folders silently excluded from a backup with no warning
-
#435 — nested dot-folders silently skipped unless selected directly
-
#442 — stale destination data when a directory is replaced by a file of the same name
-
#458 — UI shows “complete” while a backup is still actively transferring in the background
Given the pattern, I’d guess several of these — and what I’ve found here — trace back to the same underlying scan/tracking logic in icewhale-files-backup rather than being unrelated bugs.
What I’d ask the team to look at
-
Make the source file count a live, verified scan rather than a value that can go stale relative to what’s actually on disk
-
Make sure the process actually exits when a run completes, and add a watchdog/timeout so a stalled run doesn’t sit indefinitely
-
Fix the Stop control so it actually signals the running process, not just updates UI state
-
Surface real errors (permission denied, skipped items, scan mismatches) instead of silently omitting files from a run
-
Consider consolidating the existing open issues above, since they look like symptoms of the same root cause
Happy to provide further logs or reproduce steps if anyone from the team wants more detail — I have journalctl output, /proc/<pid>/io snapshots, and screenshots from the full investigation.