All notable changes to this project are documented in this file.
-
Introduced a unified delete command system with clear semantic commands:
filefileintreeallintreedir
-
Clear separation between:
- file operations
- directory operations
- recursive tree operations
-
Improved readability and maintainability of exclude files
-
Deterministic and simplified command behavior
-
Strict command-based execution model without external dependencies
-
❗ Removed all shell command execution from exclude system
-
The system no longer supports:
- shell calls
- external command execution
system()/exec()usage- shell expansion or chaining
-
All operations are now:
- internally parsed
- executed via filesystem API only
- strictly sandboxed within the MountPoint
-
Eliminated attack vectors:
- command injection
- shell expansion exploits
- environment variable injection
- argument injection via exclude file
-
Standardized exclude file format:
-
No shell parsing
-
No escaping or chaining
-
Wildcards supported internally:
*,?
-
Clear semantic behavior of commands:
-
file→ single file or wildcard match -
fileintree→ recursive file pattern deletion -
allintree→ deletes contents of a directory (keeps directory) -
dir→ deletes directory including all contents -
Reduced ambiguity in destructive operations
-
Consistent and predictable execution behavior
-
Improved path handling relative to MountPoint
- Refactored delete engine into direct filesystem dispatcher
- Removed dependency on external tools and shell
- Optimized directory traversal logic
- Consolidated duplicate traversal implementations
- Improved recursive deletion reliability
- Simplified internal logic for maintainability
- ✅ Added syntax validation in Exclude Editor before saving
- Prevents invalid or unsafe entries at edit time
- Detects:
- invalid commands
- malformed syntax (
COMMAND = PATH) - illegal or ambiguous paths
- Improves user feedback and reduces runtime errors
- Strong MountPoint boundary enforcement
- Guaranteed prevention of path escaping outside image root
- All exclude entries treated strictly as data (never executable)
- Improved validation of parsed entries
- Removed all legacy and shell-based command support
- Old exclude files are no longer compatible
- Migration to new syntax required
- Improved handling of non-existent targets
- More predictable behavior during deletion operations
- Clear distinction between destructive and non-destructive actions
[1.8.0] – 2026-04-29
- Improved reliability and consistency of MBR and fstab handling
- Safer restore process with deterministic behavior
- New exclude file editor with built-in syntax validation
- Checkboxes
deletepartition3anddeletepartition4are now only displayed if the corresponding partitions exist - The cancel function for
Create ImageandWrite Imagenow prompts for confirmation - Introduced an internal editor for exclude files
- Added syntax validation when processing exclude files
Reworked fstab generation logic:
- System partitions (p1/p2) are always taken from the image
- Additional partitions (p3+) are preserved from the target device when available
- Automatic fallback to image entries if device entries are missing, only if the fallback is mountable
- Introduced consistent PARTUUID handling
- Unified mapping between MBR, fstab, and cmdline
Improved MBR processing:
- Clear separation between image-defined structure and device-specific data
- Avoids unintended disk signature changes
- Ensures deterministic restore behavior
Increased robustness:
- Better handling of incomplete or broken existing fstab files
- More reliable restore process on systems with additional partitions
- When switching to restore mode, the source file is now checked for existence. If it does not exist, the field is cleared.
- Expanded tips.md with additional information and guidance.
- Introduced integrated help system with offline documentation viewer
- Fixed a Qt5 ComboBox issue where mouse capture was not properly released after selecting an item. This caused broken hover effects and required two clicks to interact with other UI elements.
- Device lists (source and destination) now exclude loop and RAM devices, showing only real physical devices.
- Added a tips/help file with compression recommendations and exclude file syntax documentation.
- Added installation of README, CHANGELOG, LICENSE and tips documentation to
/usr/share/doc/pibackup/. - Critical buttons and UI elements are now disabled while backup or restore processes are running to prevent invalid operations and accidental user interaction.
- Removed checkbox to optionally ignore the MBR signature, no need anymore
- In some cases MBR signature not read properly.Changed MBR reading from low level reading with fpopen to filestream.
- Invalid MBR signature could cause a crash
- Added a checkbox to optionally ignore the MBR signature (the image is checked with e2fsck after creation anyway)
- Improved error messages
- Corrected download instructions in README
- Added missing dependency for Qt5
- Installation now via
sudo apt install ./pibackup.debfrom the/bindirectory - No startup script needed anymore.
- Corrected display of transfer speed and written bytes during recover operation with compressed images.
- Updated doc files.
- Info for usersetup
- Fixed issues where unmounting failed due to mount points left behind from earlier runs.
- Enable SSH on first boot
- Set or change username and/or password
- Configure Wi-Fi – set or change SSID and password (PSK)
- Fixed progress bar behavior during resizing
- Perform thread check on shutdown instead of using static timeout
- The main function selection buttons have been moved to the top of the form.
- The progress bar now updates during resize operations.
- All functions for executing external programs have been moved into a separate unit.
- More reliable resource handling and shutdown of background processes.
- Code simplified: less duplication, clearer execution flow.
- External programs (
resize2fs,e2fsck, etc.) are now executed in a separate thread: - GUI remains responsive during long-running operations.
- Progress and cancellation are handled more consistently.
- restore functions
- now only a single call to resize2fs is needed.
- Before calling resize2fs, a sync is now executed.
- Added check for free disk space at target before creating image.
- Bugfix: Wrong exclude file was used when removing DHCP.
- Improved large parts of code
- Added progressbar
- Bugfix: Overwriting of empty blocks after shrinking was incomplete under certain conditions.
- Fixed issue where
raspberry.excludecauseddpkgto fail due to removal of essential package info directories.
- More details are now shown in the log display during operations.
- Log output can now be saved to a file via the GUI.
- Improved saving and restoring of user settings between runs.
- Empty sectors are now overwritten with 0xFF after shrinking with
resize2fs: - Improves compression of image files
- Ensures no residual data remains for security reasons
- New
start_pibackup.shscript:- Starts
pibackupwithsudoin the background - Automatically closes the launching terminal window
- Starts
- Recommended
.desktopusage with clean startup behavior
- Improved error handling using exceptions.
- Improved partition display in the grid.
- Fixed GUI issue in restore process: corrected misplaced input field.
- Added option to automatically delete the uncompressed image file after successful compression (checkbox in GUI).
- Solved problem when selecting image file for restore.
- Improved partition layout preview during restore.
- Minor updates to progress display and status messages.
- UI: Small layout and text improvements.
- Small bugfixes in backup and restore functionality.
- Initial public release.