Snapshot Browser UI suggestion

  • 'Zoom out' button as well as 'Zoom in' button.
  • Don't display future timeline

Easy to find version number

'timevault --version' should display version number. There also should be an easy and intuitive way to find version number from TimeVault GUI, such as by clicking on About in the tray icon's context menu.

Use non-mounted filesystems as snapshots root directory

Timevault currently requires the snapshots root directory to be either local, or a remote filesystem mounted locally. There is no need for this: GVFS can handle all of those on the fly. The snapshots directory should be specified as a URL, and accessed through GVFS.

I already access my various servers that way: there is no need to mount shares at all. I simply use sftp:// URLs.

Why not implement an API that can be used by other applications?

TimeVault seems to be implemented only for files, but I think it should be used per-application. Think about this:

I use Evolution and I deleted an e-mail two days ago. To restore it I click on the TimeVault button inside Evolution (such as in Nautilus) and a gui shows me only e-mail snapshots (not files).

I think it can be done using two different approaches. In a simplest one TimeVault acts as a File Server, in the sense that the application (i.e. Evolution) asks TimeVault: "give me (the path of) files A, B and C at date xx-yy-zzzz". Then the application is responsible to show data to the user and to implement the restore functionality.

The other approach uses a TimeVault gui to show and restore data. This is more complex because TimeVault doesn't know how data (i.e. emails) are stored by applications, so there would be message passing between the application (which parses data files) and TimeVault (which shows data).

Accepted: Two DBus API calls will be added:

  • Save(): Allows an application to set a domain (e.g., net.launchpad.appname, or evolution.mail) a path, display info (shown when browsing snapshots) and a delay, and have TimeVault snap it or not according to it's internal logic (if the file hasn't changed - no snap, rescheduling within the allowed delay aborts a scheduled snapshot and reschedules)

  • Find(): Allows an application to search the TimeVault DB of snapshots using domain, path, info, and time range. Returns a list of path, event-type (deleted, created, changed, etc.), and time tuples.

The Snapshot Browser can have a field where you can filter on domain.

How about restore functionality in TimeVault?

blackphiber: Lets say a user uses timevault to back everything up on their computer (of course not yet since it is still alpha) to an external hard drive. Lets say the computers hard drive crashes, use has to reinstall ubuntu, any chance in the future we could have a nice checkbox or something in the installer saying "restore from timevault" which would ask the user where the backup is? Or perhaps a standalone app like this on the desktop.

TimeVault is not made to backup a whole drive, and will actually refuse to do so if you add the root dir ('/') to the paths. For something like that, I believe there are much better solutions (such as Simple Backup, which I believe may be included in a vanilla install).

But it is a very good idea to add a feature where you can restore to a particular time in the past so you don't have to individually do it for every file or directory. While doing that would be relatively easy, I wouldn't want to include this feature unless it had the proper safeguards (like making sure you know what files are going to be restored, allowing you to filter based on directory or filetype or regex pattern, etc.). So I will probably not put it in immediately, but will add it to the list of To-Do's.

This feature could be used in conjunction with another backup mechanism (like the one mentioned above). However I see another problem, which will be an issue when I add the pruning mechanism, where it goes through and starts removing snapshots according to whatever settings it's given.

My initial idea was to remove snapshots older than X, while retaining the latest and earliest versions + Y intermediates spread as equally as possible for times previous to X. This would make it impossible to have a true representation of the backups at any particular time, only a best-effort representation.

Can we have a better snapshot browser

"yookoala: Can we have better preview for a specific file in snapshot browser? Date and time doesn't provide average user enough information about a file. I'd like to preview a file before restoring it. E.g. If that's a picture, a thumbnail is good. If that is a document, I'd want to load it in I know that may create a temp restore file at backstage. Nobody care about the dirty jobs behind the scene. What I really don't want to do, is to thing of where to restore 11 files temporarily , give them temp name, and remove them one by one afterward."

Can we store and restore older files?

"yookoala: Apple's TimeMachine provides GFS storage. It keeps monthly backups, weekly backups, daily backups wisely. You may almost restore all files of any time, almost. Can we config TimeVault to work in similar way? Can we restore files that are more than 1 years ago?"

Storage considerations

There should be a mechanism that allows the user to pick not only the snapshot cutoff date ("remove older than x") but also the stored snapshot density. This is similar, but not quite the same as the frequency of the snapshot.

Frequency is something like "every hour", or "once a day", or "twice a week". When working on a project, "every hour" may be the perfect frequency. That way, the user will have a large choice of snapshots to choose from in case of an emergency. On the other hand, although "every hour" is a very desirable accuracy, it wastes too much storage. Moreover, it is improbable that a user will ever need such fine grained snapshots for data from 6 months ago.

There is, however, a solution that gives the best of both worlds: keep fine-grained increments close to today's date, but through away every few increments as a function of their age. The snapshots that remain should be distributed as the logarithm of their age.

For example, the snapshots could be: once a day every day for the past 7 days, then once a week for the past 2 months, then once a month.

Removable media

The program should be able to take the snapshots to a removable media mounted through HAL. If the removable media is not connected the program should warn the user without trying to take a snapshot in a not mounted directory.

Status: astromme is working on HAL support for TimeVault. His work is located in the timevault-external branch. (

14 day backup restore

I agree with the above comments. Most issues happen within a 14day period and it would be nice to be able to backup/restore in that period of time. It would be nice to be able to backup, files, pictures, documents, emails, and preferences. I would love to be able to backup my Opera and OpenOffice files, documents and preferences and be able to restore them or install them in a new install from removable media.

New Time Machine Features leaked

The new Time Machine button will allow you to see only the changes that were made over the days of your backups, most likely hiding the other redundant information.

FUSE file system?

Could a FUSE or other file system be created that creates a new inode each time a user saves the file? Based on the amount of storage space remaining on the partition and the size of the file, these could all be retained, or all but the newest unlinked for a set of given time periods (e.g. 1 hour, 4 hours, 1 day, 1 week, etc). This is slightly over-simplified, but I hope you get the gist of what I mean. May clarify later.

inotify snapshot updates

Failing that, could snapshots of single files be taken when they are about to change? i.e. files would be copied at that point. If this happens already, the program description doesn't make it clear.

checksum based deduplication using installation media

The system could store checksums of files stored on installation media, e.g. the contents of .deb files on . This would allow a very compact full backup.

bootable disc for restore

In conjunction with the previous idea, a cd or dvd or could (upon insertion of standard installation media and with network access) restore a system file for file at any of the points a snapshot was taken. This could also provide an effective system restore if it could be limited to system files (i.e. those managed by the package management system, by convention (/opt, /usr/local/, /etc, etc) or manually designated as such). This would require the version of the .deb installed to still be available in the apt repository used, or for files in network acquired updates to be backed up.

How Apple TimeMachine works

This is not an idea by itself (but would be useful to integrate TimeMachine and TimeVault backups Smile :-) ) but it's a little point about how Apple TimeMachine works.

First, we have to explain two things, files and folders. TimeMachine and TimeVault works with files in the same way, using hard-links. No problem.

But with folders is diferent, since TimeVault has to recreate the folder (it's a new folder) but TimeMachine use in fact a hard-linked folder, a Tabu in UNIX operating systems almost it's origins because the problems with, ironically, the backups systems Smile :-)

This problems where because if you backup a folder that were hard-linked with a parent of if you get a loop when doing the backup, so this is really why you can't do a folder hard-link, but really it's not a file system problem (it's just a number in the file/folder metadata), so Apple developers have rewriten the ln function code to allow make folder hard-links from code (not command line) from diferent parent folder, avoiding the problem with ciclic reference using the function directly but not allowing it from command line, so TimeMachine would be able to make folder hard-links but not a user.

And what happens when a file/folder is modified in a new snaapshot? Simple: is only in this case when a new folder is recreate, but only in that folder and their parents: it's brothers and cousins are keeped as hard-links to original hard-linked folders as it used to be Smile :-)

I don't remember where i did read this, but it's how it works. I have written that because i think TimeVault would be able to make this folder hard-links so it's not wasting so much memory space and maybe to be compatible with actuals TimeMachine backups.

Properly integrade TimeVault into Nautilus

Some time ago, I've stumbled upon this little gem:

It shows how the zfs snapshots are integrated into nautilus. The design itself looks marvellous. So why not use this design to create a better TimeVault integration into Nautilus? As it stands now, the snapshot browser looks way too confusing and "crowded".

Provide preset configurations to allow system snapshots

I usually backup my data files, docs etc. The area I have a problem with is 'the system' and its settings. For example, the other day, I allowed the update notifier to do some security updates, after which the panel volume control had some problems. On another occasion, Firefox stopped playing video on some sites that had previously been ok.

I would like the ability to be able to 'roll-back' just the system to a previous point when I knew it worked, but leaving any documentation etc. files I changed alone.

What I envision is a 'preset' selection for 'system backup only, which would snapshot the operating system, together with application configuration files (typically hidden), leaving general files (gif, office, etc etc) alone. Such a set would have to be set up to exclude stuff like /tmp I assume along with cache areas that change a lot e.g. mozilla. It would include config files in /.*

As a variation on this thought, this could be done in the restore feature - giving the user the option to roll back system changes only, at restore time.

Force snapshot before system update

Ideally there should be a way to force a snapshot of the system files before a system update, whether by apt-get, aptitude or other. This probably is not feasable if the user installs from source, or even a tarball, but perhaps there may be a way to have apt call timevault before it (apt) starts updating.

Console Interface

TimeVault should have a console (ncurses) interface. This would allow it to be used for remote home directories by power-users who do not want to become "computer experts". It would also be able to be used for a home serve, again the domain of power-users and not experts. The set-up is probably more important than the snapshot browsing interface for this purpose. Doing this would allow for user friendliness with the casual server using crowd (which probably is a large overlap with non-primary Linux users).

TimeVault/Ideas (last edited 2009-01-02 19:17:02 by ddwornik)