-- in Restore.pm: # TODO: inefficient! we don't want to download the chunk from the # target multiple times. better to cache it locally, or at least # only fetch a region from the target (but that's still kinda inefficient # and pushes complexity into the Target interface) -- only use tempfiles in a 0700 directory under /tmp/brackup-$USER/ or wherever. or option, when using encryption, to only doing in-memory tempfiles, to avoid hitting disk? -- : if a file which existed when Brackup was "discovering files" subsequently goes away while Brackup is working it's magic (like a vim .swp file) Brackup tosses an error and bails: -- shouldn't backup the digest file (.brackup-digest.db) -- don't skip files ending in whitespace. figure out why GPG barfs. would the metafile also barf, having a trailing \r or \n? -- "brackup-target gc": find/clean orphan chunks on a target from metafiles -- figure out how files with intenal \r or \n in filename get written to metafile. need to be escaped? -- FUSE script to mount a *.brackup file -- tool to clean digestcache, based on prefixes, looking for files that no longer exist or have new mtimes, etc? or keep track of "last used" date field in the digestcache and just delete things that are too old? but then no longer just a dictionary. SQLite would work, but we'd ideally like lots of dumber cache mechanisms. maybe a ->clean method is optional? then a memcached backend/etc doesn't have to use it. -- Tools to rebuild your inventory database from the target's enumeration of its chunks and the target's *.brackup metafiles isn't yet done, but would be pretty easy. -- ionice stuff. network nice stuff. -- make tests pass without 'noatime' mount option -- --ignore-debian-files option (if managed by a package management system (and not an unmodified conffile), don't back it up) -- reuse tempfiles in Chunk.pm as Restore.pm does -- restoring from existing config file. -- better test coverage. currently at 84%. should ignore test coverage of test modules. move Brackup::Test to t/lib/ probably -- should do TODOs in code. :)