mirror: true overall progress via --check-first + visible scan phase

With SFTP remotes rclone lists the tree while transferring, so the
`Transferred:` total grows during the run: the first ticks showed a
single file's percentage (e.g. 2.9 MiB / 8.6 MiB, 35%) which then
collapsed to 0% once the real 113 GiB total appeared. That is what
looked like "progress per album".

- pass --check-first: rclone finishes the remote listing before any
  transfer starts, so the byte total is final and the gauge is a true
  overall percentage for the whole mirror
- while scanning, no bytes move yet, so the panel now shows
  `Scanning remote · 11,810 items listed` and `0 B / 113 GiB to transfer`
  (parsed from rclone's `Checks: … Listed N`) instead of a bogus 0% bar
- once transfers start the display switches back to percentage +
  bytes + current file

Verified against the real storagebox remote (capped with
RCLONE_MAX_TRANSFER): scan ticks show listed counts climbing to 11,810
with the pending total, then transfers show `9.984 MiB / 113.477 GiB`
with the final denominator and no per-file percentage jumps.

Bump to 0.3.2.
This commit is contained in:
Sebastian
2026-09-10 20:13:23 +02:00
parent 0ffe32ae08
commit 9366186245
7 changed files with 147 additions and 11 deletions
+4 -1
View File
@@ -87,7 +87,10 @@ Firmware types: `apple` (podkit command), `rockbox`, `android`, `sony`
## How the sync pipeline works
1. **Mirror** — `rclone sync` (or local `rsync`) pulls the StorageBox source
into the local library.
into the local library. rclone runs with `--check-first`, so the remote
listing completes before transfers start: the gauge then shows a true
overall percentage instead of the growing-total estimate, and the listing
phase is displayed as `Scanning remote · N items listed`.
2. **Diff** — the device is scanned and compared to the source with
NFC-normalised paths, size, and 2-second-rounded mtimes (FAT32 friendly).
3. **Sync** — stale files are removed first, then `rsync --files-from` copies