1rsnapshot(1) rsnapshot(1)
2
3
4
6 rsnapshot - remote filesystem snapshot utility
7
9 rsnapshot [-vtxqVD] [-c cfgfile] [command] [args]
10
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
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
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
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
587 /etc/rsnapshot.conf
588
590 rsync(1), ssh(1), logger(1), sshd(1), ssh-keygen(1), perl(1), cp(1),
591 du(1), crontab(1)
592
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
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
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
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)