Bug Fixes and Improvements for File Backups and MSSQL Restores
๐ Bug Fixes
- file backups: Symbolic links in a directory source were silently dropped. Nothing in the run log mentioned them, so the backup reported success and was incomplete - which only surfaced during a restore. Most visibly with Nginx Proxy Manager, where
letsencrypt/live/holds only links intoletsencrypt/archive/, leaving the restored instance unable to start. Links are now backed up as links, with their target preserved exactly, on Local, SFTP and Rsync sources. (#135) - MSSQL: Restoring onto a database whose name contains a hyphen, dot or space failed immediately with
Invalid database name, even though the same database was listed and backed up without complaint. (#133)
๐จ Improvements
- file backups: The collection log now counts symbolic links separately from files, and names every link a source could not hand over instead of leaving it out in silence. FTP sources report their links this way, since the protocol offers no dependable way to read a link's target.
- restore: Restoring to a destination without symbolic links (S3, Google Drive, OneDrive, Dropbox, WebDAV) names each link it cannot recreate and finishes as
Partial, rather than reporting a complete restore. The message names the destination and the working alternatives instead of reading like a transfer that broke, and the per-source summary counts skipped links apart from real failures. Restoring to a local path, over SFTP, or as a.tar.gzdownload recreates them. - execution log: Warnings are now coloured in the log viewer. Only the small level icon carried the distinction before, and a
commandorstoragetype replaces that icon - so a storage warning was indistinguishable from routine output, which is exactly where lines about missing files sit. - execution log: A stage whose only problems were warnings now shows the orange partial marker instead of a green tick, but only when the run itself came out
Partial. A successful run with ordinary warnings is unchanged. - storage explorer: Symbolic links are shown in the backup file tree with their target, instead of appearing as empty files.
- Local Filesystem: Directory sources are now collected with a walker that reports progress while it scans, prunes excluded folders instead of listing and discarding them, and reacts to a cancelled run immediately.
๐ Changed
- archive format: The index gained an
lnkfield for symbolic link targets, and the manifest acounts.symlinks. Both are additive - older backups stay readable, and a reader that does not know the field behaves exactly as before. Unencrypted archives additionally carry a real TAR symlink member, sotar -xfstill produces a correct tree. Encrypted archives keep targets in the sealed index alone, because a target is a path and a TAR header is cleartext.
๐ Documentation
- archive format: Documented
lnk,counts.symlinks, the TAR symlink member rule for unencrypted archives, and the requirement that any extractor create links only after every regular file - which is what closes the TAR symlink traversal hole. - file backups: New section on what symbolic links do and do not include, which adapters support them, and the fact that permissions are not yet preserved.
๐งช Tests
- archive: Added symbolic link coverage - round trips through encrypted and unencrypted archives, the target staying out of the clear when encrypted, a foreign
tarreading the link, path traversal through a restored link, and links being restated rather than carried forward in an incremental chain. - Local Filesystem: Added coverage for the collection walker: file links, folder links that are recorded but not descended into, and dangling links.
- MSSQL: Added coverage for which database names are accepted for restore, for bracket quoting, and for the file name derived when a restore relocates its data files.
๐ณ Docker
- Image:
skyfay/dbackup:v3.0.2 - Also tagged as:
latest,v3 - CI Image:
skyfay/dbackup:ci - Platforms: linux/amd64, linux/arm64