summary refs log tree commit diff
path: root/README
blob: c55e5a520d3246691eed0e1e06424c1b4a76fd96 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
= rdumpfs, a rsync-based dump file system backup tool

== Usage

Run "rdumpfs SRC... DST" to create a daily backup of the SRC folders
at the rsync-target DST.  SRC or DST can be local or remote addresses.
Only incremental changes against the last version use disk space,
unchanged files are hardlinked.

Note that rdumpfs just wraps rsync, so the trailing slashes of SRC are
treated as in rsync: A trailing slash avoids creating an additional
directory level at the destination.

To give you an idea, a example tree after running
  rdumpfs /home /dump
on two days:

  /dump/
    20121208/
      .rdumpfs.12312.log
      home/
        chris/
          foo
          delete_me_soon
          ...
    20121209/
      .rdumpfs.98945.log
      home/
        chris/
          foo -> hardlinked, same file as /dump/20121208/home/chris/foo
          new
          ...

== Features

* Only needs bash (or zsh) and rsync.
* Uses robust rsync command for all backup logic.
* Per-folder file ".rdumpfs" to configure exclusions (with possibly
  additional variants).
* Never deletes files (except in the current backup, only if -f is
  passed), clean up old dumps yourself.
* Backups can be resumed/updated (e.g. if you backed up a big file
  accidentally today, you can just exclude it and re-run the backup.)
* Remote backup goes both ways: Remote systems can backup your files
  ("pull"), or you can backup to remote systems ("push").
* Easily hackable script, in case your needs are different from mine.

== rsync options that may be useful together with rdumpfs

* --fake-super to backup to non-root accounts
* --bwlimit so you don't clog your connection
* --partial to continue backups of big files
* --exclude for global excludes
* --dry-run to see what would happen

== Why not use...

Obviously, there are many similar scripts, among which I have used
dirvish and rsnapshot before writing rdumpfs for keeping daily dumps.
Currently I use rdumpfs and attic.

* dirvish: Requires Perl with non-standard libraries.  Cannot continue
  partial backups.  Complex configuration.  No push backup.

* rsnapshot: Requires Perl.  No date-based directory naming.  Obscure
  configuration.  No push backup.

* pdumpfs: Requires Ruby.  No special files.  No remote backups.

* rsync-incr: No push backup.

* rdiff-backup: Requires Python.  Old backups are not kept accessible in
  the file system.

* duplicity: Requires Python.  Backups are not kept accessible in the
  file system.

* rsback: Requires Perl.  No date-based directory naming.

* attic: Requires Python.  Backups are not kept accessible in the
  file system.  Else highly recommended.

== When not use rdumpfs?

* You want encrypted backups (try attic, duplicity).
* You need incremental backups on a higher granularity than files (try
  attic, bup, vac, dar).
* Your target doesn't support hardlinks/SSH/rsync (try duplicity).
* You want automatic expiry (try dirvish).

== Copyright

rdumpfs is in the public domain.

To the extent possible under law, the creator of this work has waived
all copyright and related or neighboring rights to this work.

http://creativecommons.org/publicdomain/zero/1.0/