A simple unix-style backup tool
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


tobackup - A simple unix-style backup tool

tobackup is a short script written in sh(1) for performing local or remote
incremental backup over SSH. It aims to keep simple and easy to understand by
following Unix philosophy : use cron(8) for backup scheduling, ssh(1) for
remote data transfer, and rsync(1) for its capability to performs incremental
copy of directories.

tobackup is based on a pull model : the backup server is the host which fetch
and store backup, and the backup client is the host which is backuped.
For backuping your local host, use the same steps, and specify for
the _HOST parameter (see below).

Launch the program with no parameters to get help.
In addition, the following steps must be performed.

1) Config file on backup server
Default config file on backup server is /usr/local/etc/backuprc. Override this
with the -f flag.

See backuprc.sample in this directory for examples and comments.

2) Configure SSH for a remote backuped host (if necessary)
Add the SSH key to the .ssh/authorized_keys file of the remote user who
will be used for transfer, with the following options. If root, you may
specify "forced-commands-only" for the PermitRootLogin directive of sshd.

Example (backup server has IP address :

from="",command="rsync --daemon --server --config /usr/local/etc/rsyncd-backup.conf .",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa XXXXXXXXXXX root@backupserver

3 Configure rsyncd on a backuped host (remote or local)
Add the directories to backup in /usr/local/etc/rsyncd-backup.conf. See
rsyncd-backup(5) man page. Example :

read only=yes
use chroot=no
exclude = /dev

read only=yes
use chroot=no
exclude = /ports

4) Launching the script

tobackup takes mainly 3 arguments :

-h HOST1   : use config for HOST1 in config file
DIR        : store backup in DIR
NUMKEEP    : number of incrementals backup to keep in DIR

For example, the command :

$ tobackup -h host1 daily 6

keeps 6 backups in "daily" directory. If you launch this command each day, you
have daily backups of the last 6 days.

5) Scheduling backup on backup server
Scheduling is done using cron(8). Example :

35      23      *       *       1-6     [ $(date +\%d) -ne 1 ] && tobackup -h host1 daily 6
35      23      *       *       0       [ $(date +\%d) -ne 1 ] && tobackup -h host1 weekly 3
50      23      1       *       *       tobackup -h host1 monthly 6

This performs daily backup on the last 6 days at 23:35, from monday to
saturday, weekly backup on the last 3 weeks at the same time on sunday, and
monthly backup on the last 6 months the first day of each month.

Note : You may add the -v switch to get a full listing of file transfers.

Thomas Martin <thomas@oopss.org>