david/sshbackup
david
/
sshbackup
Archived
1
0
Fork 0
bash script for performing incremental backups.
This repository has been archived on 2023-12-23. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
david 13b56064db moved config section to down script start and put the find home routine into a function 2013-07-06 13:00:39 +02:00
README.md modified readme 2013-07-01 22:41:05 +02:00
sshbackup moved config section to down script start and put the find home routine into a function 2013-07-06 13:00:39 +02:00

README.md

sshbackup

sshbackup is a bash script for doing incremental backups. it creates as many incremental versions of a folder as you wish for and it does that with local folders as well as with remote folders.

installation

sudo wget https://raw.github.com/beyondthewall/sshbackup/0.3.1/sshbackup -O /usr/bin/sshbackup
sudo chmod +x /usr/bin/sshbackup

usage

"usage: sshbackup <options> source destination [versions]"
"source/destination example: [[user@]server:]/path/to/files"

"OPTIONS:"
   -h, --help                show this message"
   -v, --version             version information"

   -l, --list <file>         list of sources and destinations"
   -c, --config <file>       alternate config file [~/.sshbackup]"
   -s, --sshkey <file>       alternate sshkey [~/.ssh/id_rsa]"

scheduling

for doing reoccuring backups utilize cron to do the job. type:

sudo crontab -e

and create cronjob(s) like following:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO="admin@example.com"

#m h  dom mon dow   command
0 2      * * *      sshbackup /path/to/source /path/to/destination 5
0 3      * * *      sshbackup -s /path/to/sshkey -l /path/to/listfile
0 4      * * *      sshbackup bkpuser@server:/path/to/source /path/to/destination 30

notifications

utilize crons MAILTO directive for getting error notifications.

MAILTO=admin@example.com

automation

for automated backups configure a sshkey for the root user and configure your remote machines to trust that key.

sudo su
ssh-keygen
ssh-copy-id <remote machine>

you must add the backupuser to /etc/sudoers on your remote servers as well to make automated backups work. type:

sudo visudo #this will open /etc/sudoers in a texteditor

and add following at the end of that file:

backupuser ALL=(root)NOPASSWD: /usr/bin/rsync

you can use a file which should have a source/destination combination each line. example listfile:

#<source> <destination> [<versions>]
david@dev.socialnerds.org:/home/david /home/david/Downloads/devhome 30
backupuser@dev.socialnerds.org:/home/gollum/ /home/david/Downloads/gollum
/home/david/something /home/david/backup 5

~/.sshbackup

an example config with default values looks like this.

#rsync options.
rsyncoptions="-pogEthrzl --numeric-ids --no-motd"
#dotglob option removes bug while rsyncing folder with no visible files in it.
remotecmd="shopt -s dotglob; /usr/bin/sudo /usr/bin/rsync"
localcmd="/usr/bin/rsync"
sshkeyfile="$HOME/.ssh/id_rsa"
#default versions
versions=999

roadmap

this should be a little overview of what's coming..

.
.
.                    
|
|
+--- version 0.3.1
|                    O/
|                   /|
+--- You are here   / \
|
+--- better logging/notifications (even reports/stats)
+--- system check & install missing dependencies
+--- automatic sshkey creation/config
+--- bandwidth limits
+--- check if process is still running
+--- remote settings deployment
+--- move documentation to sudo crontab -e
|
+--- version 0.4.0
|
.
.
.

(roadmap is inspired by https://github.com/hbons/SparkleShare/wiki/Roadmap)