A modular cross-platform system snapshot and restoration utility that uses the underlying OS tooling to perform operations
Switch branches/tags
Nothing to show
Pull request Compare This branch is 3 commits behind movitto:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


 Snap is a utility to take and restore system snapshots on Linux, Windows, and Mac
 The end user can accomplish this by using the 'snaptool' command, the command line
 utility, as well as the 'gsnap' tool, the graphical user interface.
 Snap will use the native system tooling to take snapshots of package repositories,
 installed packages, files modified outside of the package system (only those files
 so as to keep snapshots lightweight and portable), and the services running on the system.

 Snap also permits converting Snapshots between alternative systems. Thus for example
 it is possible to take a snapshot of a Ubuntu Linux system and convert it to a Fedora
 snapshot or take a snapshot of a Windows system and convert it to a Mac snapshot.

 Both RPM and DEB packages are provided for systems which use those package formats.
 Additionally Windows and Mac installers are provided.
   - In install from a source checkout / tarball simply run 'make install'
   - To install on Fedora/RHEL/etc, simply run 'yum install snap'

   - To install on Debian/Ubuntu/etc, simple run 'apt-get install snap' (coming soon!)
       - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=649585

   - Windows Vista / Win7 Installer:
       - http://mo.morsi.org/files/snap/snap-installer.exe

   - WinXP / MacOSX installers (coming soon!)

[Running from the Command Line]
 Run 'snaptool --help' for all available command line options

 To take a snapshot:
   snaptool --backup --log-level=verbose --snapfile /tmp/snapfile.tgz \
            --repos --packages --files=/home:/etc:!/etc/shadow

   --backup    instructs snap to run in backup mode
   --log-level instructs snap to output verbose log messages
   --snapfile  instructs snap to write the resulting snapshot to /tmp/snapfile.tgz
   --repos     instructs snap to take a snapshot of the package repositories
   --packages  instructs snap to take a snapshot of the packages installed locally
   --files     instructs snap to take a snapshot of the specified files,
               specifically those under /home, /etc, but not the /etc/shadow file

 To restore a snapshot:
   snaptool --restore --snapfile /tmp/snap-12.06.2007-23.57.54.tgz

   --restore   instructs snap to in snapshot restoration mode
   --log-level instructs snap to output verbose log messages
   --snapfile  specifies the location of the snapfile to restore

 If running from a source checkout, be sure to set 'PYTHONPATH' before
 invoking snaptool or gsnap, eg

   git clone git://github.com/movitto/snap
   cd snap
   sudo PYTHONPATH='.' ./bin/snaptool --help

 When invoking the command line tools pass in the snapshot targets which you
 would like to backup. Additionally you may exclude targets by passing them
 in prefixed with 'no'. For example to backup repositories but not packages,

   --repos --nopackages
 To restrict specific entities which get backed up (specific files for example)
 pass that as a colon-seperated parameter list into the target's command line flag.
 Indicate which specific entities you would like to exclude by prefixing those in
 the list with a '!'. For example, to backup the files in the /home directory,
 excluding jsmith's home, specify:


[Running the Graphical Interface]
 To launch the graphical user interface:

 You may click on the 'help' button for help w/ the graphical utility

 You may set configuration options for Snap by modifying /etc/snap.conf
   (on Windows C:\Program Files\Snap\snap.conf)

 Default values are provided there with regard to the default targets to
 backup / restore and the default parameters to use during Snap operations
 (for example the default postgresql/mysql root password, various default
  service directories, etc)

 Developers can extend snap by defining new snapshot targets, or abstract
 entities which snapshots can be taken of / restored, and backends implementing
 those targets. 
 See the EXTENDING document for more info on how to extend Snap

 Snap is written by and copyright (C) of Mohammed Morsi (mo@morsi.org) 2007-2011
 Licensed under the GPLv3