svn-backup
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:An easy, fast, efficient way to backup multiple subversion repositories.
# svn-backup

svn-backup is a simple tool meant to make backing up multiple subversion
repositories easy and efficient. Most of the tools that exist today are
overly complex, rely on specific svn backends or filesystems, create too
many unnecessary files, or otherwise don't fit my needs.

svn-backup generates portable subversion dumpfiles that can be loaded
into nearly any repository. It relies on the little-known fact that
incremental dumpfiles can simply be *appended* to an existing dumpfile.
svn-backup creates a full dumpfile on first run, and then continually
appends to that dumpfile. In this way, 100 subversion repositories will only
ever be contained within 100 dumpfiles, no matter how many times the backup
process is run. You'll never again have to waste time combining N files
*per repository* in just the right order to restore your backup.

This gives you the advantage of full backups at the smaller cost of an
incremental.

svn-backup will optionally compress your backups. Much like subversion
dumpfiles, distinct gzip files can be concatenated to form one continuous
compressed stream [1]. svn-backup utilizes this property to keep incremental
backups fast on large repositories by avoiding a complete gunzip/gzip cycle.

svn-backup maintains state from previous backups to ensure dumpfile
integrity. It will refuse to append to a dumpfile that doesn't match
the previously generated file, but will instead generate a full
backup. If the youngest repository revision hasn't changed, svn-backup won't
do anything.

The resulting dumpfiles can easily be backed up via tools such as rsync.
Because svn-backup only adds the differences between revisions to an
existing file, rsync will be very bandwidth efficient.

## Installation

Add this line to your application's Gemfile:

    gem 'svn-backup'

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install svn-backup

## Configuration

svn-backup assumes that you have number of subversion repositories
located at a common root:

```
  /var/svn
    repository_1/
    repository_2/
    ...
    repository_n/
```

A sample configuration file (in YAML format) might look like this:

```
 ---
 :svn_root: /var/svn
 :svnadmin: /usr/bin/svnadmin
 :svnlook: /usr/bin/svnlook
 :svn_backup: /var/backup/svn
 :repository_state: /var/backup/repositories.yaml
 :repo_pattern: .
 :create_directories: true
 :retention_size: 8
 :gzip: true
 :gzip_path: /bin/gzip
 :quiet: false
```

In this case, subversion repositories will be inspected at /var/svn, and the
resulting dumpfiles will be located at /var/backup/svn.

As new repositories are found, state information about each one will appear in
the file specified by repository_state. Be sure to place this somewhere
consistent. If you delete it, svn-backup will generate full backups for every
repository.

## Usage

```
 Usage: svn-backup [options]
    -h, --help                       Usage information
    -f, --full                       Force full backup
    -q, --quiet                      Output less status information
    -c, --config FILE                Config file
    -v, --version                    Version
```

## Restoration

svn-backup generates simple subversion dumpfiles that can be loaded with
svnadmin.

Step 1: Create an empty repository
```
 svnadmin create /var/svn/repository_1
```
Step 2: Load the dumpfile
```
 svnadmin load /var/svn/repository_1 < repository_1.dumpfile
```
Step 3: There is no step 3!

A simple bash command can load all repositories at once:
```
 find . -type f -name "*.dumpfile" | while read i; do repository_name=`basename "$i" .dumpfile`; svnadmin create "$repository_name" && svnadmin load "$repository_name" < "$i"; done
```
Or, if gzipped:
```
 find . -type f -name "*.dumpfile.gz" | while read i; do repository_name=`basename "$i" .dumpfile.gz`; svnadmin create "$repository_name" && zcat "$i" | svnadmin load "$repository_name"; done
```
## Upgrade

Please note that upgrading from 0.1.x to 0.2.x will cause a full backup
of every repository due to differing state information in repositories.yaml.

## License
svn-backup is copyright 2010 Adam Lamar and distributed under the terms of
the GNU General Public License (GPL).  See the LICENSE file for further
information.

## Contributing

1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Added some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request

# References

[1] http://www.gzip.org/zlib/rfc-gzip.html#file-format


本源码包内暂不包含可直接显示的源代码文件,请下载源码包。