DapperHomeUserBackup

Revision 26 as of 2005-11-03 16:50:33

Clear message

Summary

This specification discusses implementing a simple and concise backup solution for new and intermediate users. This application would be available in Ubuntu out of the box and will take special measures to care for the unsuspecting users. It will encourage them to do frequent backups, allowing to choose among different media as required by the size of data.

Rationale

Providing an easy-to-use backup solution that's suitable for non-expert users is important. Expert users should install and/or use a more sophisticated backup system.

Use Cases

  • John is a new Ubuntu user. He has been using his system for a week now, managed to sort everything out by means of getting his favorite theme set up and desktop behavior. He has also already got quite a few important email messages and some other bits of information currently stored on his Desktop. John however, is a new comer to Ubuntu and is not aware of the fact he has to do periodical backups. After using his machine for a week, a pop up dialog appears telling him "It's has been a week since you installed your computer. In order to be able to restore it back to the current state if data loss occurs, it's recommended that you do a backup. Would you like to do that now". Upon confirmation, he he asked to insert blank backup media and a backup is carried on.
  • Bob is an Ubuntu user. He has some very important openoffice spreadsheet files on his Desktop (used to store financial reports he hsa to submit to the tax authority). While working, he accidently deletes one of this important files. However, Bob was clever enough to follow the backup program's instructions, week after his first installation and backup his data. Unworried, he fires up the backup program. He inserts the backup CD into drive, and chooses "Restore missing files". The backup program scans through the index files and watches for files on the index which are not on the hard drive. It finds Bob's file, asks for his confirmation and if confirmed, copy the file back to its original path from before the deletion. IanJackson: this "restore missing files" is pie in the sky even if we thought it was a good idea, surely ? I thought we were going to have something simpler for restoration. But it's not covered in the spec at all.

  • Rob wants to refresh the backup set he had previously created. He opens the backup program, and is prompted to insert his old backup media if its rewriteable (multi-sesion CD), or blank media (CDR) if not. Then, the backup program scans for only that changes and additions to the Rob's personal file system ($HOME) and backs up only the things that have changed.

Scope

This specification covers only backing up one or more user data and settings, namely everything under $HOME with the exclusion of:

  • Audio files
  • Video files
  • Content that should not be backed up. (.gnupg and other sensitive settings)

This will *NOT* handle:

  • Data mirroring.
  • Doing backup against non local media. (i.e. network, nfs, sftp etc..)
  • Multi volume backups. (could be considered for the next version of this spec)
  • Encryption. (ditto)

UI

IanJackson: Can we please have whole sentences everywhere ? Running prose ? Organised content ?

First trigger for launching the backup system: at install+1 week, pop up a notification (much like update manager) which prompts the user about backups. When selected, the user gets a wizard where the first options are:

  • Never bother me again
  • I want daily/weekly/monthly backups
  • Postpone decision

If the user asks for backups, we check for available hardware and ask the user to choose. Pick a default based on the available hardware, usually CDRW or USB removeable. If there is no suitable hardware, tell the user about suitable options (help page with USB / CDRW / whatever choices)

Then, every selected interval, bother user again to actually make the backup. Options include:

  • `yes, back up now'.
  • `nag me later'.
  • `no, skip this backup, nothing important has changed'.

At all points the system will be in charge; it will plan the backup schedule and tell the user what media to insert and what to label the media and so forth. No assumption are made about user's knowledge.

If the data doesn't fit: First, try excluding media content; if that would work, prompt user that we will do this and ask them to buy bigger media (eg, removeable USB hard drive or writeable DVD); failing that, say we can't do a backup.

Menu options in various menus:

  • System / Administration / Configure backup - reruns the wizard
  • System / Administration / Backup now
  • System / Administration / Restore from a backup

Autorun: If the user just inserts a backup disk, ask whether to do an incremental backup or to restore data.

Design

IanJackson: this section is not a design, its a series of bullet points.

  • Backup applet: Small panel applet responsible for presenting alerts to the user based on data collected from the backend.
  • Backup Policy:
    • Focused : Only backup $HOME(s).
    • Permissions: Allow only sudo enabled user to do a backup.
    • Exclude problematic content by means of storage space and/or sensitivity:
      • Audio files.
      • Visual files.
      • GPG signature; alert user that this will not backed up, and should be stored safely not part of the backup. IanJackson: Am I the only person who thinks that excluding the most critical files from the backup is a very bad idea ?

  • Media handling: Suggest media for backup based on sotrage device detection.
  • UI:
    • Wizard based UI, less is more.
    • Integrate enough help per each option.
    • Provide consitent and accurate progress indication per each processing job.
    • Allow for declining operation and break in the middle.

Implementation

  • No intention to write an incremental backup solution; use $COMMAND_LINE_TOOL instead as a backend:
  • Wizard process shall menifest in a suggested invocation command line for that command line tool.
  • Pass command line to $COMMAND_LINE_TOOL, grep from progress from stdio and represent in the UI.

Code

Data preservation and migration

Not applicable to this project.

Outstanding issues

  • Choice of underlying tools (in particular, differential/incremental archiving tool).
  • How to decide rotation policy etc. based on user's choice, data volume, etc: algorithms need to be specified.
  • sbackup is a proof of concept of the general kind of thing but is somewhat orthogonal to the required functionality. It may serve as a base for what we want.

BOF

IanJackson: what is this stuff ? Please refactor.

User Interaction:

with answers from last bof

  • Backup the whole system vs. just the user's $HOME
    • whole system
  • Having an exclusion wizard for scenarios when data doesn't fit or exceeds an amount of time, focusing on excluding media (audio, video) content for now
  • Backup the list of installed packages, perhaps start synaptic with those packages checked when restoring
  • If there are several users on the same machine, the admin (main user) should be able to backup selected users profiles
    • Nice and simple: back up /home (ie, all users)
  • Show a warning to non-sudo users if backups have not been scheduled for their accounts.
  • option to disable the complete feature if we're on big installations.
    • this via configuration file