I've written a few prototypes and this comes down to four issues. Some of
the details below are debian/ubuntu-specific but the same concepts will
apply to redhat.

1. User data (/home) must be backed up explicitly. (ditto server data on
servers).

2. Packages should NOT be backed up. All you need is the package name and
version. Reinstall from .deb and .rpm if necessary since this way you're
sure that you never restore compromised files.

3. Configuration data (/etc) must be backed up explicitly. This is tricky
because backing up the entire directory will cause its own problems. Worse,
some applications keep their configuration files elsewhere. The best
solution I've found is to scan the package metadata to identify
configuration files and to only save those with a different checksum than
the standard file.

4. Local files. Ideally everyone would keep these files under /usr/local and
/opt but that's rarely the case. The best solution I've found is to scan the
debian package metadata and do a monster diff between what's on the
filesystem under /bin, /sbin, /usr and (chunks of) /var with what's in the
metadata.

It's worth noting that the last item isn't that hard if you have a strict
security policy that everything under those directories MUST be in a
package. It's deleted without a second thought if it's not. You can still do
everything you could before, you just need to create a local package for it.

So what do you do with this? The best solution, which I haven't implemented
yet, is to handle #2 and #3 with autogenerated packages. You set up one or
more local packages that will install the right software and then overwrite
the configuration files. You can fit everything, including original package
archive, on a single DVD.

BTW Debian has a C++ interface to the package metadata. I've never used it -
I find it easier to just scan the metadata directory myself. There's also
hooks that will allow your application to be called at each step during a
package installation or removal. You could, in theory, keep your snapshots
current to the last minute that way.


On Fri, Sep 30, 2011 at 12:01 AM, Gaurav Saxena <grvsaxena...@gmail.com>wrote:

> Hello Aaron
> Thanks a lot for your quick reply.
>
> On Fri, Sep 30, 2011 at 10:03 AM, Aaron C. de Bruyn <aa...@heyaaron.com>wrote:
>
>> In Windows, the ability to snapshot is built into the filesystem.
>> In Linux, you must be running a filesystem that supports snapshots.  I
>> know LVM supports snapshotting and I believe BRTFS has support, but
>> other than that I'm not sure.
>>
>> Yes I read the logic behind windows system restore. But I think we can
> take some other approach for this, that will be better as all users won't be
> able to spare an extra partition formatted brtfs.
>
>
>> Basically, your program would have to check the file system that is
>> used on the computer (remember Linux can have many types of file
>> systems mounted at the same time), then (in the case of LVM) make sure
>> there's enough free space to snapshot, and finally take the snapshot.
>>
>> Ok. Do I have to snapshot the whole system partition / important system
> files to the brtfs partition ?
>
>
>> When the snapshots start filling up, you would either need to delete
>> them or detect the low space and resize them.
>>
>> In my personal opinion, snapshotting in Linux is currently a pain in
>> the rear.  It sounds like BTRFS could change that, but it's still a
>> ways off.
>>
>> Ok.  I will try another approach that will be better as suggested by
> people here.
>
>
>> -A
>>
>>
>> On Thu, Sep 29, 2011 at 21:00, Gaurav Saxena <grvsaxena...@gmail.com>
>> wrote:
>> > Hello all,
>> > I want to write a windows system restore like program for ubuntu , which
>> > will have options for creating restore points for the system and then
>> > restoring it back to that point. Also I will as an extension provide
>> support
>> > for older version of a file as is in windows currently. I need your help
>> to
>> > find how to start with this in ubuntu. I know that I have to snapshot
>> the
>> > system when creating a restore point and then restore it. I need some
>> > starting pointers so that I can start doing this work. Also if this has
>> > already been done please inform me. I got this idea from
>> >  https://wiki.ubuntu.com/SystemRestore.
>> > --
>> > Thanks and Regards ,
>> > Gaurav
>> >
>> > --
>> > Ubuntu-devel-discuss mailing list
>> > Ubuntu-devel-discuss@lists.ubuntu.com
>> > Modify settings or unsubscribe at:
>> > https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel-discuss
>> >
>> >
>>
>
>
>
> --
> Thanks and Regards ,
> Gaurav
>
>
>
> --
> Thanks and Regards ,
> Gaurav
>
> --
> Ubuntu-devel-discuss mailing list
> Ubuntu-devel-discuss@lists.ubuntu.com
> Modify settings or unsubscribe at:
> https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel-discuss
>
>
-- 
Ubuntu-devel-discuss mailing list
Ubuntu-devel-discuss@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel-discuss

Reply via email to