# Backup Script
-A script for cloning systems using rsync.
-Copyright (c)2008-2016 Alexander Barton (<alex@barton.de>)
-Homepage: https://github.com/alexbarton/backup-script
+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-2022 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>] [<job> [<job> [...]]]`
Show information about backups.
-Usage: `backup-status [-q] [<job> [<job> [...]]]`
+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
Options:
-- `-q`: *quiet mode*, don't show jobs 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
All default configuration variables are read from the first file found of this
-list: `/usr/local/etc/backup-scrupt.conf`, `/etc/backup-script.conf` or
+list: `/usr/local/etc/backup-script.conf`, `/etc/backup-script.conf` or
from `/etc/backup-script.d/backup-script.conf` (deprecated).
All jobs that should be backed-up are configured using individual files
- `/etc/backups-script.d/host01.example.net`: configuration for host 1
- `/etc/backups-script.d/clientXY.example.com`: configuration for host 2
-
### Global Settings
The following global configuration options exist:
-- `setup_exec`: Script to run _before_ creating the lock file etc.
+- `setup_exec`: Script to run *before* creating the lock file etc.
- `pre_exec`: Pre-execution script, run before all jobs.
- `post_exec`: Post-execution script, run after all jobs.
variant can be used and define default values for all jobs that don't overwrite
them individually.
-
## Configuration Variables
### system
Please note that neither `ssh_args_add`, `rsync_args_add`, `compress`, nor any
"exclude" parameters are supported when using the "scp" backup type! And There
-"scp" backup type never _deletes_ files from the backup store; so if you reduce
+"scp" backup type never *deletes* files from the backup store; so if you reduce
the list of files to backup, old files will still be kept, because they were
already saved in an older generation (but no longer updated).
Supported file systems are:
- * *btrfs*:
- All generations are btrfs subvolumes and named after the date and time.
- * *ZFS*:
- All generations are ZFS file systems. Latest generation is named `current`,
- elders are links to the ZFS snapshot directories.
+- *btrfs*:
+ All generations are btrfs subvolumes and named after the date and time.
+- *ZFS*:
+ All generations are ZFS file systems. Latest generation is named `current`,
+ elders are links to the ZFS snapshot directories.
The latest snapshot is always reachable using a symlink named `latest`
inside the system directory.
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 job definition