## System Restore Spec ||<>|| * '''Launchpad Entry''': https://features.launchpad.net/distros/ubuntu/+spec/system-restore * '''Created''': 11/05/2006 by towsonu2003 * '''Contributors''': towsonu2003 * '''Packages affected''': Ubuntu == Summary == Ubuntu should backup the system configurations every time an important configuration file was tweaked or a package was installed / upgraded (the "Windows Style", sorry to say) and restore the system upon request to the last known sane time. == Rationale == * The user should feel free to play around with her/his system, being more or less sure that "System Restore" will save her/him from big trouble * The user should be confident that if an upgrade break something due to bad [[https://features.launchpad.net/distros/ubuntu/+spec/security-update-qa|QA]], the system will be able to recover. == Use cases == * Usage1: Marx installs xgl. It borks his X but I do not remember what kind of tweaks he did. He hits "Restore System" under System > Administration and all is back * Usage2: An upgrade breaks Patricia Hill's system and borks dpkg. She hits "System Restore" and her system is back. * Usage3: Bill will upgrade to Firefox2 using a custom repository. He hits "Create System Restore Point" worrying that it might break his good old Firefox. * Usage4: Daly dist-upgraded from 6.06 to 6.10... Ubuntu created a "System Restore Point" before the dist-upgrade in case it breaks the system. It broke her system indeed. She hist "System Restore" and her working 6.06 is back. == Scope == The feature enables users to trust their system's stability: * Upgrades cannot bork the system * Dist-upgrades cannot bork the system * A bad package cannot bork the system * An X breakage can easily recovered from * Complex customizations of the system can easily be undone == Implementation == As a high level stab in the dark at an implimentation I'd suggest a Copy On Write and Save on Delete ( if they are not the same thing ) approach. The steps would be. * 0) Configure System Life Saver ( SLS) [ Directories / Structures to store modified / deleted files ] * 1) Run System Life Saver - Puts the COW and SOD components active * 2) Update / Install / Do What you Like * 3) Run System Life Saver - Create Diff Point ( With Date ) - This step closed the SLS processes At some stage run sls --restore dd/mm/yyyy ( and a time component?? ) to go back in time :D Or, you could just use a journaling file system. == Outstanding issues == * "System Restore" may be copyrighted and / or patented by Microsoft... We might need to find a new name, or even a new way to back up the system. * Hard Disk space usage: backing up system configuration files and old deb packages will force us to increase minimum hdd space standards (of a new install) if this feature is enabled... == Discussion == The idea of implementing this with any form of "tar" command is just madness. CategorySpec