# Backup Script
-A script for cloning systems using rsync.
-Copyright (c)2008-2016 Alexander Barton <alex@barton.de>
+A script for backing up data using `ssh`(1), `rsync`(1), and `scp`(1).
+Can handle backup generations on *btrfs* and *ZFS*.
+Copyright (c)2008-2016 Alexander Barton (<alex@barton.de>)
+Homepage: https://github.com/alexbarton/backup-script
+
+
+## Installation
+
+Call the scripts located in `./bin` directly from the source folder, or run
+`make install` to install them to `/usr/local/sbin`.
+
+You can set `PREFIX` to use an other path prefix than `/usr/local` like this:
+`make PREFIX=/opt/backup-script install`.
## Usage
### backup-script
-Backup all or individual systems.
+Run all or individual backup jobs.
-Usage: `backup-script [<options>] [<system> [<system> [...]]]`
+Usage: `backup-script [<options>] [<job> [<job> [...]]]`
Options:
- `-n`, `--dry-run`: Test run only, don't copy any data.
- `-p`, `--progress`: Show progress, see rsync(1).
- `-t TAG`, `--tag TAG`: Only run jobs with tag TAG (see "tags" variable below).
-- `x`, `--no-exec`: Don't run global setup-, pre-, and post-exec commands.
+- `-x`, `--no-exec`: Don't run global setup-, pre-, and post-exec commands.
-When no *system* is given, all defined systems are backed up.
+When no *job* is given, all defined jobs are run.
### backup-script-wrapper
-Backup all systems and mail the report to "root".
+Backup all systems ("run all jobs") and mail the report to "root".
-Usage: `backup-script-wrapper [<backup-script-options-and-systems ...>]`
+Usage: `backup-script-wrapper [<backup-script-options-and-job-names ...>]`
### backup-status
Show information about backups.
-Usage: `backup-status [-q] [<system> [<system> [...]]]`
+Usage:
+
+- `backup-status [--errors|--latest] [--quick] [<job> [<job> [...]]]`
+- `backup-status --running`
Options:
-- `-q`: *quick mode*, don't calculate backup sizes.
+- `-e`, `--errors`: only show current backups with errors (implies `--latest`).
+- `-l`, `--latest`: only show latest backup generations.
+- `-q`, `--quick`: *quick mode*, don't calculate backup sizes.
+- `-r`, `--running`: check if an `backup-script` task is currently running.
+
+When no *job* is given, all defined jobs are listed.
### backup-audit
Show "relevant" differences in system configuration between backup generations.
-Usage: `backup-audit [-q] [-v] [<system> [<system> [...]]]`
+Usage: `backup-audit [-q] [-v] [<job> [<job> [...]]]`
Options:
-- `-q`: *quiet mode*, don't show systems without "relevant" changes.
-- `-v`: *verbose mode*, show all checks that are run.
+- `-d`, `--dirs`: compare two backup directories (not jobs).
+- `-q`, `--quiet`: *quite mode*, only list jobs with changes or errors.
+- `-v`, `--verbose`: *verbose mode*, show all checks that are run.
+
+When no *job* is given, all defined jobs are checked.
## Configuration
list: `/usr/local/etc/backup-scrupt.conf`, `/etc/backup-script.conf` or
from `/etc/backup-script.d/backup-script.conf` (deprecated).
-All systems which should be backed-up are configured using individual files
+All jobs that should be backed-up are configured using individual files
in the configuration directory, which is `/usr/local/etc/backup-script.d/` or
`/etc/backup-script.d/` by default (whichever is found first), and can be
specified using the `conf_d` variable in the main configuration file.
-The must be one file for each system to backup (files ending in `*.sh` are
+The must be one job file for each system to backup (files ending in `*.sh` are
skipped, as well as files named `backup-script.conf`). Please avoid spaces and
other "special" characters! The filename is used as hostname for the system by
default, but this can be overwritten using the `system` configuration variable.
Variables in `backup-script.conf` must be prefixed with `default_` to define
-default values for all systems.
+default values for all jobs.
-All defaults can be overwritten in the individual system configuration files.
+All defaults can be overwritten in the individual job configuration files.
For example:
### [default_]target
-Local backup directory. The backup of each system is stored in a folder named
-like the system (see `system` variable) inside of this target directory.
+Local backup directory. The backup data of each job is stored in a folder named
+like the job (see `system` variable) inside of this target directory.
*Note:* There is *no* default, you have to specify this variable, for example as
`default_target` in the `backups-script.conf` file!
script in job definition files are automatically mapped to the new backup-script
variables:
-* host -> system
-* source -> source_root
-* pre_exec -> job_pre_exec
-* post_exec -> job_post_exec
+* `host` -> `system`
+* `source` -> `source_root`
+* `pre_exec` -> `job_pre_exec`
+* `post_exec` -> `job_post_exec`
## Exit codes
+- 0: No error, success.
- 1: Unspecific Error!
- 2: Usage information has been shown.
-- 3: Can't read system definition
+- 3: Can't read job definition
- 4: PID-file exists!
- 5: Pre-exec command failed!
-- 6: There have been systems with errors!
+- 6: There have been jobs with errors!
- 7: Not all jobs were run!
- 9: Aborted (CTRL-C)!