← Back to team overview

duplicity-team team mailing list archive

Coalescing of Incremental Backups/Snapshots

 

Dear Duplicity Team,

If any of you are following the development of Time Drive, you might be interested to know that we just released a second version (http://www.oak-tree.us/blog/index.php/2009/09/24/timedrive-02). At the same time, the project has a new home on Launchpad (https://launchpad.net/time-drive). In the recently released version of Time Drive, the big push was to clean up the code base and make it easier to customize the settings for individual backup folders, which has largely been complete. I now feel like we have a (relatively) well organized code base that can grow.

Which means it's time to start thinking about future features. One of the big ones that we'd like to see is a better way to manage backups and snapshots, with the combination of incremental backups/snapshots (as discussed a few weeks ago on this list) being integral to that goal.

Which is really the purpose of this email. In the next few weeks, I'm going to have some time to devote to development and would like to spend that time working on the incremental backup combination feature. And because it is always better to share, if that code was written with the hope of eventual inclusion into duplicity, it might save others a bit of work in the future.

Before diving in and generally making a mess, though, I had a couple of questions:

   * What is the overall workflow that this code would need to follow?

         o This is what I've drafted so far: Locate and download .tar
           archives -> extract diff files -> compare signatures to
           availabe diff versions -> discard previous diffs that aren't
           needed to maintain chain continuity ->
           re-compress/re-encrypt to new .tar archive(s) -> Upload to
           storage -> Modify manifest and other files to reflect the
           changes

   * Are there any important steps that I am missing?

   * In the rough workflow above, is there already existing code that
     handles certain components?  Or will all of the code need to be
     written from scratch?

   * Are there existing methods that do similar tasks that might serve
     examples in working with the duplicity classes?  (I've been trying
     to sort my way through restore files methods to better understand
     how to work with individual backup sets and the manifest.)

   * How does one go about modifying the existing manifest so that the
     backup chain is broken beyond all hope of repair?

My apologies for two rather long emails in as many days, but this is a feature that I think would make an excellent addition to both Time Drive and to duplicity, and I've learned that free time should be taken advantage of when it appears.

Cheers,

Rob

Follow ups