Gitback ==== Gitback allows you to version arbitrary files and/or directories in a git repository. You just need to include the gem and write a brief ruby script that indicates the files/directories you'd like to backup. Then, run the script via cron. Gitback will take care of a adding/commiting/pushing whenever your files are modified. The typical usage for this is backing up config files. ## Requirements ############################################################### * git (http://git-scm.com) tested with 1.6.0.4 * grit (http://github.com/mojombo/grit) 2.0.0 or higher ## Install #################################################################### $ gem install gitback -s http://gemcutter.org ## Usage ###################################################################### Here's a basic example of a script using gitback: require 'rubygems' require 'gitback' Gitback::Repository.new '/var/config-backup/' do |repo| repo.backup '/opt/nginx/conf/nginx.conf' end This will check /opt/nginx/conf/nginx.conf for changes. If the file has changed, gitback will commit a new version. This nginx config file would be saved to the following location: /var/config-backup/opt/nginx/conf/nginx.conf Everything starts with instantiating a new `Gitback::Repository` object. The first parameter is the path to the git repository you'd like to backup to. The second parameter is a block indicating the files/directories you'd like to backup. ### Directory support In addition to basic files, directory paths can also be backed up: Gitback::Repository.new '/var/config-backup/' do |repo| repo.backup '/opt/nginx/conf/nginx.conf' repo.backup '/etc/mysql/' end Notice that '/etc/mysql' is a directory. Gitback will copy everything within that directory into the git repository. ### Namespaces Namespaces are also supported. If you'd like to use the same repository for multiple servers you can specify a namespace like this: Gitback::Repository.new '/var/config-backup/' do |repo| repo.namespace 'server1.domain.com' do repo.backup '/opt/nginx/conf/nginx.conf' end end This will save the file to the following location: /var/config-backup/server1.domain.com/opt/nginx/conf/nginx.conf ### Remote Git Repositories Gitback is intended to be used with remote git repositories. If your git repository is tracking a remote branch, gitback will push changes to the remote after each commit. ### Running Via Cron There's nothing special about a gitback script. In order for it to backup your files you'll need to run it via the command line. I suggest setting up a cron job to do this for you at regular intervals. ## Copyright ################################################################### Copyright (c) 2010 Bryce Thornton. See LICENSE for details.