1rsnapshot(1)                                                      rsnapshot(1)
2
3
4

NAME

6       rsnapshot - remote filesystem snapshot utility
7

SYNOPSIS

9       rsnapshot [-vtxqVD] [-c cfgfile] [command] [args]
10

DESCRIPTION

12       rsnapshot is a filesystem snapshot utility. It can take incremental
13       snapshots of local and remote filesystems for any number of machines.
14
15       Local filesystem snapshots are handled with rsync(1). Secure remote
16       connections are handled with rsync over ssh(1), while anonymous rsync
17       connections simply use an rsync server. Both remote and local transfers
18       depend on rsync.
19
20       rsnapshot saves much more disk space than you might imagine. The amount
21       of space required is roughly the size of one full backup, plus a copy
22       of each additional file that is changed. rsnapshot makes extensive use
23       of hard links, so if the file doesn't change, the next snapshot is sim‐
24       ply a hard link to the exact same file.
25
26       rsnapshot will typically be invoked as root by a cron job, or series of
27       cron jobs. It is possible, however, to run as any arbitrary user with
28       an alternate configuration file.
29
30       All important options are specified in a configuration file, which is
31       located by default at /etc/rsnapshot.conf. An alternate file can be
32       specified on the command line. There are also additional options which
33       can be passed on the command line.
34
35       The command line options are as follows:
36
37           -v verbose, show shell commands being executed
38
39           -t test, show shell commands that would be executed
40
41           -c path to alternate config file
42
43           -x one filesystem, don't cross partitions within each backup point
44
45           -q quiet, suppress non-fatal warnings
46
47           -V same as -v, but with more detail
48
49           -D a firehose of diagnostic information
50

CONFIGURATION

52       /etc/rsnapshot.conf is the default configuration file. All parameters
53       in this file must be separated by tabs. /etc/rsnapshot.conf.default can
54       be used as a reference.
55
56       It is recommended that you copy /etc/rsnapshot.conf.default to
57       /etc/rsnapshot.conf, and then modify /etc/rsnapshot.conf to suit your
58       needs.
59
60       Here is a list of allowed parameters:
61
62           config_version     Config file version (required). Default is 1.2
63
64           snapshot_root      Local filesystem path to save all snapshots
65
66           include_conf       Include another file in the configuration at
67           this point.
68
69               This is recursive, but you may need to be careful about paths
70               when specifying which file to include.  We check to see if the
71               file you have specified is readable, and will yell an error if
72               it isn't.  We recommend using a full path.
73
74           no_create_root     If set to 1, rsnapshot won't create snap‐
75           shot_root directory
76
77           cmd_rsync          Full path to rsync (required)
78
79           cmd_ssh            Full path to ssh (optional)
80
81           cmd_cp             Full path to cp  (optional, but must be GNU ver‐
82           sion)
83
84               If you are using Linux, you should uncomment cmd_cp. If you are
85               using a platform which does not have GNU cp, you should leave
86               cmd_cp commented out.
87
88               With GNU cp, rsnapshot can take care of both normal files and
89               special files (such as FIFOs, sockets, and block/character
90               devices) in one pass.
91
92               If cmd_cp is disabled, rsnapshot will use its own built-in
93               function, native_cp_al() to backup up regular files and direc‐
94               tories. This will then be followed up by a separate call to
95               rsync, to move the special files over (assuming there are any).
96
97           cmd_rm             Full path to rm (optional)
98
99           cmd_logger         Full path to logger (optional, for syslog sup‐
100           port)
101
102           cmd_du             Full path to du (optional, for disk usage
103           reports)
104
105           cmd_rsnapshot_diff Full path to rsnapshot-diff (optional)
106
107           cmd_preexec
108
109               Full path (plus any arguments) to preexec script (optional).
110               This script will run immediately before each backup operation
111               (but not any rotations).
112
113           cmd_postexec
114
115               Full path (plus any arguments) to postexec script (optional).
116               This script will run immediately after each backup operation
117               (but not any rotations).
118
119           interval           [name]   [number]
120
121               "name" refers to the name of this interval (e.g., hourly,
122               daily). "number" is the number of snapshots for this type of
123               interval that will be stored.  The value of "name" will be the
124               command passed to rsnapshot to perform this type of backup.
125
126               Example: interval hourly 6
127
128               [root@localhost]# rsnapshot hourly
129
130               For this example, every time this is run, the following will
131               happen:
132
133               <snapshot_root>/hourly.5/ will be deleted, if it exists.
134
135               <snapshot_root>/hourly.{1,2,3,4} will all be rotated +1, if
136               they exist.
137
138               <snapshot_root>/hourly.0/ will be copied to <snap‐
139               shot_root>/hourly.1/ using hard links.
140
141               Each backup point (explained below) will then be rsynced to the
142               corresponding directories in <snapshot_root>/hourly.0/
143
144               Intervals must be specified in the config file in order, from
145               most frequent to least frequent. The first entry is the one
146               which will be synced with the backup points. The subsequent
147               intervals (e.g., daily, weekly, etc) simply rotate, with each
148               higher interval pulling from the one below it for its .0 direc‐
149               tory.
150
151               Example:
152
153                   interval  hourly 6
154
155                   interval  daily  7
156
157                   interval  weekly 4
158
159               daily.0/ will be copied from hourly.5/, and weekly.0/ will be
160               copied from daily.6/
161
162               hourly.0/ will be rsynced directly from the filesystem.
163
164           link_dest           1
165
166               If your version of rsync supports --link-dest (2.5.7 or newer),
167               you can enable this to let rsync handle some things that GNU cp
168               or the built-in subroutines would otherwise do. Enabling this
169               makes rsnapshot take a slightly more complicated code branch,
170               but it's the best way to support special files on non-Linux
171               systems.
172
173           sync_first          1
174
175               sync_first changes the behaviour of rsnapshot. When this is
176               enabled, all calls to rsnapshot with various intervals simply
177               rotate files. All backups are handled by calling rsnapshot with
178               the "sync" argument. The synced files are stored in a ".sync"
179               directory under the snapshot_root.
180
181               This allows better recovery in the event that rsnapshot is
182               interrupted in the middle of a sync operation, since the sync
183               step and rotation steps are seperated. This also means that you
184               can easily run "rsnapshot sync" on the command line without
185               fear of forcing all the other directories to rotate up.  This
186               benefit comes at the cost of one more snapshot worth of disk
187               space.  The default is 0 (off).
188
189           verbose             2
190
191               The amount of information to print out when the program is run.
192               Allowed values are 1 through 5. The default is 2.
193
194                   1        Quiet            Show fatal errors only
195                   2        Default          Show warnings and errors
196                   3        Verbose          Show equivalent shell commands being executed
197                   4        Extra Verbose    Same as verbose, but with more detail
198                   5        Debug            All kinds of information
199
200           loglevel            3
201
202               This number means the same thing as verbose above, but it
203               determines how much data is written to the logfile, if one is
204               being written.
205
206               The only thing missing from this at the higher levels is the
207               direct output from rsync. We hope to add support for this in a
208               future release.
209
210           logfile             /var/log/rsnapshot
211
212               Full filesystem path to the rsnapshot log file. If this is
213               defined, a log file will be written, with the amount of data
214               being controlled by loglevel. If this is commented out, no log
215               file will be written.
216
217           include             [file-name-pattern]
218
219               This gets passed directly to rsync using the --include direc‐
220               tive. This parameter can be specified as many times as needed,
221               with one pattern defined per line. See the rsync(1) man page
222               for the syntax.
223
224           exclude             [file-name-pattern]
225
226               This gets passed directly to rsync using the --exclude direc‐
227               tive. This parameter can be specified as many times as needed,
228               with one pattern defined per line. See the rsync(1) man page
229               for the syntax.
230
231           include_file        /path/to/include/file
232
233               This gets passed directly to rsync using the --include-from
234               directive. See the rsync(1) man page for the syntax.
235
236           exclude_file        /path/to/exclude/file
237
238               This gets passed directly to rsync using the --exclude-from
239               directive. See the rsync(1) man page for the syntax.
240
241           rsync_short_args    -a
242
243               List of short arguments to pass to rsync. If not specified,
244               "-a" is the default. Please note that these must be all next to
245               each other.  For example, "-az" is valid, while "-a -z" is not.
246
247           rsync_long_args     --delete --numeric-ids --relative
248           --delete-excluded
249
250               List of long arguments to pass to rsync. Beginning with rsnap‐
251               shot 1.2.0, this default has changed. In previous versions, the
252               default values were
253
254                   --delete --numeric-ids
255
256               Starting with version 1.2.0, the default values are
257
258                   --delete --numeric-ids --relative --delete-excluded
259
260               This directly affects how the destination paths in your backup
261               points are constructed. Depending on what behaviour you want,
262               you can explicitly set the values to make the program behave
263               like the old version or the current version. The newer settings
264               are recommended if you're just starting. If you are upgrading,
265               read the upgrade guide in the INSTALL file in the source dis‐
266               tribution for more information.
267
268               Quotes are permitted in rsync_long_args, eg --rsync-path="sudo
269               /usr/bin/rsync".  You may use either single (') or double (")
270               quotes, but nested quotes (including mixed nested quotes) are
271               not permitted.  Similar quoting is also allowed in per-backup-
272               point rsync_long_args.
273
274           ssh_args    -p 22
275
276               Arguments to be passed to ssh. If not specified, the default is
277               none.
278
279           du_args     -csh
280
281               Arguments to be passed to du. If not specified, the default is
282               -csh.  GNU du supports -csh, BSD du supports -csk, Solaris du
283               doesn't support -c at all. The GNU version is recommended,
284               since it offers the most features.
285
286           lockfile    /var/run/rsnapshot.pid
287
288               Lockfile to use when rsnapshot is run. This prevents a second
289               invocation from clobbering the first one. If not specified, no
290               lock file is used.  Make sure to use a directory that is not
291               world writeable for security reasons.  Use of a lock file is
292               strongly recommended.
293
294               If a lockfile exists when rsnapshot starts, it will try to read
295               the file and stop with an error if it can't.  If it *can* read
296               the file, it sees if a process exists with the PID noted in the
297               file.  If it does, rsnapshot stops with an error message.  If
298               there is no process with that PID, then we assume that the
299               lockfile is stale and ignore it.
300
301           one_fs    1
302
303               Prevents rsync from crossing filesystem partitions. Setting
304               this to a value of 1 enables this feature. 0 turns it off. This
305               parameter is optional.  The default is 0 (off).
306
307           use_lazy_deletes    1
308
309               Changes default behavior of rsnapshot and does not initially
310               remove the oldest snapshot. Instead it moves that directory to
311               "interval".delete, and continues as normal. Once the backup has
312               been completed, the lockfile will be removed before rsnapshot
313               starts deleting the directory.
314
315               Enabling this means that snapshots get taken sooner (since the
316               delete doesn't come first), and any other rsnapshot processes
317               are allowed to start while the final delete is happening. This
318               benefit comes at the cost of one more snapshot worth of disk
319               space. The default is 0 (off).
320
321           UPGRADE NOTICE:
322
323               If you have used an older version of rsnapshot, you might
324               notice that the destination paths on the backup points have
325               changed. Please read the INSTALL file in the source distribu‐
326               tion for upgrade options.
327
328           backup  /etc/                       localhost/
329
330           backup  root@example.com:/etc/      example.com/
331
332           backup  rsync://example.com/path2/  example.com/
333
334           backup  /var/                       localhost/      one_fs=1
335
336           backup_script   /usr/local/bin/backup_pgsql.sh    pgsql_backup/
337
338               Examples:
339
340               backup   /etc/        localhost/
341
342                   Backs up /etc/ to <snapshot_root>/<interval>.0/local‐
343                   host/etc/ using rsync on the local filesystem
344
345               backup   /usr/local/  localhost/
346
347                   Backs up /usr/local/ to <snapshot_root>/<interval>.0/local‐
348                   host/usr/local/ using rsync on the local filesystem
349
350               backup   root@example.com:/etc/       example.com/
351
352                   Backs up root@example.com:/etc/ to <snapshot_root>/<inter‐
353                   val>.0/example.com/etc/ using rsync over ssh
354
355               backup   root@example.com:/usr/local/ example.com/
356
357                   Backs up root@example.com:/usr/local/ to <snap‐
358                   shot_root>/<interval>.0/example.com/usr/local/ using rsync
359                   over ssh
360
361               backup   rsync://example.com/pub/      example.com/pub/
362
363                   Backs up rsync://example.com/pub/ to <snap‐
364                   shot_root>/<interval>.0/example.com/pub/ using an anonymous
365                   rsync server. Please note that unlike backing up local
366                   paths and using rsync over ssh, rsync servers have "mod‐
367                   ules", which are top level directories that are exported.
368                   Therefore, the module should also be specified in the des‐
369                   tination path, as shown in the example above (the pub/
370                   directory at the end).
371
372               backup   /var/     localhost/   one_fs=1
373
374                   This is the same as the other examples, but notice how the
375                   fourth parameter is passed. This sets this backup point to
376                   not span filesystem partitions.  If the global one_fs has
377                   been set, this will override it locally.
378
379               backup_script      /usr/local/bin/backup_database.sh
380               db_backup/
381
382                   In this example, we specify a script or program to run.
383                   This script should simply create files and/or directories
384                   in its current working directory. rsnapshot will then take
385                   that output and move it into the directory specified in the
386                   third column.
387
388                   Please note that whatever is in the destination directory
389                   will be completely deleted and recreated. For this reason,
390                   rsnapshot prevents you from specifying a destination direc‐
391                   tory for a backup_script that will clobber other backups.
392
393                   So in this example, say the backup_database.sh script sim‐
394                   ply runs a command like:
395
396                       #!/bin/sh
397
398                       mysqldump -uusername mydatabase > mydatabase.sql
399
400                       chmod u=r,go= mydatabase.sql  # r-------- (0400)
401
402                   rsnapshot will take the generated "mydatabase.sql" file and
403                   move it into the <snapshot_root>/<interval>.0/db_backup/
404                   directory. On subsequent runs, rsnapshot checks the differ‐
405                   ences between the files created against the previous files.
406                   If the backup script generates the same output on the next
407                   run, the files will be hard linked against the previous
408                   ones, and no additional disk space will be taken up.
409
410           Remember that tabs must separate all elements, and that there must
411           be a trailing slash on the end of every directory.
412
413           A hash mark (#) on the beginning of a line is treated as a comment.
414
415           Putting it all together (an example file):
416
417               # THIS IS A COMMENT, REMEMBER TABS MUST SEPARATE ALL ELEMENTS
418
419               config_version  1.2
420
421               snapshot_root   /.snapshots/
422
423               cmd_rsync       /usr/bin/rsync
424               cmd_ssh         /usr/bin/ssh
425               #cmd_cp         /bin/cp
426               cmd_rm          /bin/rm
427               cmd_logger      /usr/bin/logger
428               cmd_du          /usr/bin/du
429
430               interval        hourly  6
431               interval        daily   7
432               interval        weekly  7
433               interval        monthly 3
434
435               backup          /etc/                     localhost/
436               backup          /home/                    localhost/
437               backup_script   /usr/local/bin/backup_mysql.sh  mysql_backup/
438
439               backup          root@foo.com:/etc/        foo.com/
440               backup          root@foo.com:/home/       foo.com/
441               backup          root@mail.foo.com:/home/  mail.foo.com/
442               backup          rsync://example.com/pub/  example.com/pub/
443

USAGE

445       rsnapshot can be used by any user, but for system-wide backups you will
446       probably want to run it as root.
447
448       Since backups usually get neglected if human intervention is required,
449       the preferred way is to run it from cron.
450
451       When you are first setting up your backups, you will probably also want
452       to run it from the command line once or twice to get a feel for what
453       it's doing.
454
455       Here is an example crontab entry, assuming that intervals hourly,
456       daily, weekly and monthly have been defined in /etc/rsnapshot.conf
457
458           0 */4 * * *         /usr/local/bin/rsnapshot hourly
459
460           50 23 * * *         /usr/local/bin/rsnapshot daily
461
462           40 23 * * 6         /usr/local/bin/rsnapshot weekly
463
464           30 23 1 * *         /usr/local/bin/rsnapshot monthly
465
466           This example will do the following:
467
468               6 hourly backups a day (once every 4 hours, at 0,4,8,12,16,20)
469
470               1 daily backup every day, at 11:50PM
471
472               1 weekly backup every week, at 11:40PM, on Saturdays (6th day
473               of week)
474
475               1 monthly backup every month, at 11:30PM on the 1st day of the
476               month
477
478           It is usually a good idea to schedule the larger intervals to run a
479           bit before the lower ones. For example, in the crontab above,
480           notice that "daily" runs 10 minutes before "hourly".  The main rea‐
481           son for this is that the daily rotate will pull out the oldest
482           hourly and make that the youngest daily (which means that the next
483           hourly rotate will not need to delete the oldest hourly), which is
484           more efficient.  A secondary reason is that it is harder to predict
485           how long the lowest interval will take, since it needs to actually
486           do an rsync of the source as well as the rotate that all intervals
487           do.
488
489           If rsnapshot takes longer than 10 minutes to do the "daily" rotate
490           (which usually includes deleting the oldest daily snapshot), then
491           you should increase the time between the intervals.  Otherwise
492           (assuming you have set the lockfile parameter, as is recommended)
493           your hourly snapshot will fail sometimes because the daily still
494           has the lock.
495
496           Remember that these are just the times that the program runs.  To
497           set the number of backups stored, set the interval numbers in
498           /etc/rsnapshot.conf
499
500           To check the disk space used by rsnapshot, you can call it with the
501           "du" argument.
502
503           For example:
504
505               rsnapshot du
506
507           This will show you exactly how much disk space is taken up in the
508           snapshot root. This feature requires the UNIX du command to be
509           installed on your system, for it to support the "-csh" command line
510           arguments, and to be in your path. You can also override your path
511           settings and the flags passed to du using the cmd_du and du_args
512           parameters.
513
514           It is also possible to pass a relative file path as a second argu‐
515           ment, to get a report on a particular file or subdirectory.
516
517               rsnapshot du localhost/home/
518
519           The GNU version of "du" is preferred. The BSD version works well
520           also, but does not support the -h flag (use -k instead, to see the
521           totals in kilobytes). Other versions of "du", such as Solaris, may
522           not work at all.
523
524           To check the differences between two directories, call rsnapshot
525           with the "diff" argument, followed by two intervals or directory
526           paths.
527
528           For example:
529
530               rsnapshot diff daily.0 daily.1
531
532               rsnapshot diff daily.0/localhost/etc daily.1/localhost/etc
533
534               rsnapshot diff /.snapshots/daily.0 /.snapshots/daily.1
535
536           This will call the rsnapshot-diff program, which will scan both
537           directories looking for differences (based on hard links).
538
539           rsnapshot sync
540
541               When sync_first is enabled, rsnapshot must first be called with
542               the sync argument, followed by the other usual cron entries.
543               The sync should happen as the lowest, most frequent interval,
544               and right before. For example:
545
546                   0 */4 * * *         /usr/local/bin/rsnapshot sync &&
547                   /usr/local/bin/rsnapshot hourly
548
549                   50 23 * * *         /usr/local/bin/rsnapshot daily
550
551                   40 23 1,8,15,22 * * /usr/local/bin/rsnapshot weekly
552
553                   30 23 1 * *         /usr/local/bin/rsnapshot monthly
554
555               The sync operation simply runs rsync and all backup scripts. In
556               this scenario, all interval calls simply rotate directories,
557               even the lowest interval.
558
559           rsnapshot sync [dest]
560
561               When sync_first is enabled, all sync behaviour happens during
562               an additional sync step (see above). When using the sync argu‐
563               ment, it is also possible to specify a backup point destination
564               as an optional parameter. If this is done, only backup points
565               sharing that destination path will be synced.
566
567               For example, let's say that example.com is a destination path
568               shared by one or more of your backup points.
569
570                   rsnapshot sync example.com
571
572               This command will only sync the files that normally get backed
573               up into example.com.  It will NOT get any other backup points
574               with slightly different values (like example.com/etc/, for
575               example). In order to sync example.com/etc, you would need to
576               run rsnapshot again, using example.com/etc as the optional
577               parameter.
578

EXIT VALUES

580           0  All operations completed successfully
581
582           1  A fatal error occurred
583
584           2  Some warnings occurred, but the backup still finished
585

FILES

587       /etc/rsnapshot.conf
588

SEE ALSO

590       rsync(1), ssh(1), logger(1), sshd(1), ssh-keygen(1), perl(1), cp(1),
591       du(1), crontab(1)
592

DIAGNOSTICS

594       Use the -t flag to see what commands would have been executed. This
595       will show you the commands rsnapshot would try to run. There are a few
596       minor differences (for example, not showing an attempt to remove the
597       lockfile because it wasn't really created in the test), but should give
598       you a very good idea what will happen.
599
600       Using the -v, -V, and -D flags will print increasingly more information
601       to STDOUT.
602
603       Make sure you don't have spaces in the config file that you think are
604       actually tabs.
605
606       Much other weird behavior can probably be attributed to plain old file
607       system permissions and ssh authentication issues.
608

BUGS

610       Please report bugs (and other comments) to the rsnapshot-discuss mail‐
611       ing list:
612
613       http://lists.sourceforge.net/lists/listinfo/rsnapshot-discuss
614

NOTES

616       Make sure your /etc/rsnapshot.conf file has all elements separated by
617       tabs.  See /etc/rsnapshot.conf.default for a working example file.
618
619       Make sure you put a trailing slash on the end of all directory refer‐
620       ences.  If you don't, you may have extra directories created in your
621       snapshots.  For more information on how the trailing slash is handled,
622       see the rsync(1) manpage.
623
624       Make sure to make the snapshot directory chmod 700 and owned by root
625       (assuming backups are made by the root user). If the snapshot directory
626       is readable by other users, they will be able to modify the snapshots
627       containing their files, thus destroying the integrity of the snapshots.
628
629       If you would like regular users to be able to restore their own back‐
630       ups, there are a number of ways this can be accomplished. One such sce‐
631       nario would be:
632
633       Set snapshot_root to /.private/.snapshots in /etc/rsnapshot.conf
634
635       Set the file permissions on these directories as follows:
636
637           drwx------    /.private
638
639           drwxr-xr-x    /.private/.snapshots
640
641           Export the /.private/.snapshots directory over read-only NFS, a
642           read-only Samba share, etc.
643
644           See the rsnapshot HOWTO for more information on making backups
645           accessible to non-privileged users.
646
647           For ssh to work unattended through cron, you will probably want to
648           use public key logins. Create an ssh key with no passphrase for
649           root, and install the public key on each machine you want to
650           backup. If you are backing up system files from remote machines,
651           this probably means unattended root logins. Another possibility is
652           to create a second user on the machine just for backups. Give the
653           user a different name such as "rsnapshot", but keep the UID and GID
654           set to 0, to give root privileges. However, make logins more
655           restrictive, either through ssh configuration, or using an alter‐
656           nate shell.
657
658           BE CAREFUL! If the private key is obtained by an attacker, they
659           will have free run of all the systems involved. If you are unclear
660           on how to do this, see ssh(1), sshd(1), and ssh-keygen(1).
661
662           Backup scripts are run as the same user that rsnapshot is running
663           as.  Typically this is root. Make sure that all of your backup
664           scripts are only writable by root, and that they don't call any
665           other programs that aren't owned by root. If you fail to do this,
666           anyone who can write to the backup script or any program it calls
667           can fully take over the machine. Of course, this is not a situation
668           unique to rsnapshot.
669
670           By default, rsync transfers are done using the --numeric-ids
671           option.  This means that user names and group names are ignored
672           during transfers, but the UID/GID information is kept intact. The
673           assumption is that the backups will be restored in the same envi‐
674           ronment they came from. Without this option, restoring backups for
675           multiple heterogeneous servers would be unmanageable. If you are
676           archiving snapshots with GNU tar, you may want to use the
677           --numeric-owner parameter. Also, keep a copy of the archived sys‐
678           tem's /etc/passwd and /etc/group files handy for the UID/GID to
679           name mapping.
680
681           If you remove backup points in the config file, the previously
682           archived files under those points will permanently stay in the
683           snapshots directory unless you remove the files yourself. If you
684           want to conserve disk space, you will need to go into the <snap‐
685           shot_root> directory and manually remove the files from the small‐
686           est interval's ".0" directory.
687
688           For example, if you were previously backing up /home/ with a desti‐
689           nation of localhost/, and hourly is your smallest interval, you
690           would need to do the following to reclaim that disk space:
691
692               rm -rf <snapshot_root>/hourly.0/localhost/home/
693
694           Please note that the other snapshots previously made of /home/ will
695           still be using that disk space, but since the files are flushed out
696           of hourly.0/, they will no longer be copied to the subsequent
697           directories, and will thus be removed in due time as the rotations
698           happen.
699

AUTHORS

701       Mike Rubel - http://www.mikerubel.org/computers/rsync_snapshots/
702
703       - Created the original shell scripts on which this project is based
704
705           Nathan Rosenquist (nathan@rsnapshot.org)
706
707           - Primary author and previous maintainer of rsnapshot.
708
709           David Cantrell (david@cantrell.org.uk)
710
711           - Current co-maintainer of rsnapshot
712           - Wrote the rsnapshot-diff utility
713
714           David Keegel <djk@cybersource.com.au>
715
716           - Co-maintainer, with responsibility for release management since
717           1.2.9
718           - Fixed race condition in lock file creation, improved error
719           reporting
720           - Allowed remote ssh directory paths starting with "~/" as well as
721           "/"
722           - Fixed a number of other bugs and buglets
723
724           Carl Wilhelm Soderstrom (chrome@real-time.com)
725
726           - Created the RPM .spec file which allowed the RPM package to be
727           built, among other things.
728
729           Ted Zlatanov (tzz@lifelogs.com)
730
731           - Added the one_fs feature, autoconf support, good advice, and much
732           more.
733
734           Ralf van Dooren (r.vdooren@snow.nl)
735
736           - Added and maintains the rsnapshot entry in the FreeBSD ports
737           tree.
738
739           SlapAyoda
740
741           - Provided access to his computer museum for software testing.
742
743           Carl Boe (boe@demog.berkeley.edu)
744
745           - Found several subtle bugs and provided fixes for them.
746
747           Shane Leibling (shane@cryptio.net)
748
749           - Fixed a compatibility bug in utils/backup_smb_share.sh
750
751           Christoph Wegscheider (christoph.wegscheider@wegi.net)
752
753           - Added (and previously maintained) the Debian rsnapshot package.
754
755           Bharat Mediratta (bharat@menalto.com)
756
757           - Improved the exclusion rules to avoid backing up the snapshot
758           root (among other things).
759
760           Peter Palfrader (weasel@debian.org)
761
762           - Enhanced error reporting to include command line options.
763
764           Nicolas Kaiser (nikai@nikai.net)
765
766           - Fixed typos in program and man page
767
768           Chris Petersen - (http://www.forevermore.net/)
769
770               Added cwrsync permanent-share support
771
772           Robert Jackson (RobertJ@promedicalinc.com)
773
774               Added use_lazy_deletes feature
775
776           Justin Grote (justin@grote.name)
777
778               Improved rsync error reporting code
779
780           Anthony Ettinger (apwebdesign@yahoo.com)
781
782               Wrote the utils/mysqlbackup.pl script
783
784           Sherman Boyd
785
786               Wrote utils/random_file_verify.sh script
787
788           William Bear (bear@umn.edu)
789
790               Wrote the utils/rsnapreport.pl script (pretty summary of rsync
791               stats)
792
793           Eric Anderson (anderson@centtech.com)
794
795               Improvements to utils/rsnapreport.pl.
796
797           Alan Batie (alan@batie.org)
798
799               Bug fixes for include_conf
800
802       Copyright (C) 2003-2005 Nathan Rosenquist
803
804       Portions Copyright (C) 2002-2006 Mike Rubel, Carl Wilhelm Soderstrom,
805       Ted Zlatanov, Carl Boe, Shane Liebling, Bharat Mediratta, Peter Pal‐
806       frader, Nicolas Kaiser, David Cantrell, Chris Petersen, Robert Jackson,
807       Justin Grote, David Keegel, Alan Batie
808
809       This man page is distributed under the same license as rsnapshot: the
810       GPL (see below).
811
812       This program is free software; you can redistribute it and/or modify it
813       under the terms of the GNU General Public License as published by the
814       Free Software Foundation; either version 2 of the License, or (at your
815       option) any later version.
816
817       This program is distributed in the hope that it will be useful, but
818       WITHOUT ANY WARRANTY; without even the implied warranty of MER‐
819       CHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
820       Public License for more details.
821
822       You should have received a copy of the GNU General Public License along
823       with this program; if not, write to the Free Software Foundation, Inc.,
824       51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
825
826
827
828                                  2007-05-28                      rsnapshot(1)
Impressum