v0.6.3: Release 0.6.3
Performance improvements
-
Improved performance of incremental backups, by removing check that blocks referenced by the previous backup are still present. In one experiment of writing a large tree with few changes to a moderately-slow USB drive, this cuts overall elapsed time by a factor of about 7x!
The check is redundant unless the archive has somehow been corrupted: blocks are always written out before the index hunk than references them.
The basic approach in Conserve is to assume, in commands other than
validate
, that the archive is correctly formatted, and to avoid unnecessary ad-hoc checks that this is true.
Behavior changes
-
Removed global
--stats
option. Stats are always shown as info-level messages. -
Better ISO 8601 style timestamps in
conserve versions
output.
Bugs fixed
-
Don't panic on timestamps on or before the Unix epoch in 1970. (#100)
-
Correctly count index IO in the backup stats summary. (#87)
Documentation improved
- Improved, updated, and corrected format and design documentation (in the
doc
subdirectory of the source tree.)
Archive format changes
-
Conserve 0.6.3 uses the same 0.6 archive format, but backups it writes can only be read by 0.6.3 and later.
-
Add a per-band minimum version (
BAND_FORMAT_VERSION
), allowing for future additions to the format without requiring a whole new archive. This is stored inband_format_version
within theBANDHEAD
file. Conserve gives a clean error message if it can't read the per-band minimum version. (#96) -
Improved index uncompressed size slightly, by omitting the data offset within the block when it is zero, which is common.
API and internal changes
Various, including:
-
Removal of
Report
concept. Instead, operations return a type-specificStats
describing the work that was done, messages are logged, and progress bars are drawn through theui
module. -
New small code style guide.