A backup script for linux systems using rsync and ssh.
Go to file
Stefan Sterz b7eda3b071
fix: fix comment formatting
2018-03-18 11:54:10 +01:00
.gitignore chore: add lo(ck|g) and config files to gitignore 2018-03-18 11:17:03 +01:00
LICENSE Initial commit 2017-07-21 16:57:16 +02:00
README.md feat: add variable to readme 2018-03-18 11:50:29 +01:00
backup.sh fix: fix comment formatting 2018-03-18 11:54:10 +01:00

README.md

Backup

A flexible backup script for backing up linux system using rsync, ssh, cron and other common shell commands.

Usage

First add your settings at the top of the file and then add a cronjob to periodically execute the script. In the following paragraphs the settings will be explained.

SOURCES is an array containing the paths to the folders that should be included in the backup.

TARGET the absolute path to the folder where the backup will be saved to. If the TOSSH option is used, this should of course be the absolute path on the remote system.

EXCLUDEFROM a path to a file containing folders and files that should be excluded from a backup.

MAILADRESS if this option is a non empty string, the log of the backup will be send to the email adress contained in this string. For this to work the mail command must be set up properly.

LISTPACKAGES if this option is set to a non empty string the log of the backup will contain a list of installed packages. For this command to work the dpkg command must be installed properly.

LOG the name of the log file.

RSYNCCONF an array that contains additional rsync flags.

TOSSH if this option is set to a non empty string, the backup will be saved on the remote host that this string refrences. Attention: Please set the TOSSHUSER and TOSSHPORT options as well, otherwise the script will probably fail to create a backup successfully.

FROMSSH if this option is set to a non empty string the folders refrenced in SOURCES will be fetched from the remote host refrenced by this string. Attention: Please set the FROMSSHUSER and FROMSSHPORT options as well otherwise the script might fail to create a backup successfully.

Attention: If both the TOSSH & FROMSSH options are set the script will fail!

WEEKS the number of weeks for which we will safe backups for.

Settings example

## General Settings
SOURCES=(/home/example)           # What folder should be saved?
TARGET="/home/backup/example"     # Where should they be saved? (absolute path!)
EXCLUDEFROM="~/exclude.txt"       # What files are supposed to be excluded?
MAILADRESS="example@example.com"  # To which email adress should the logs be sent?
LISTPACKAGES=""                   # Change to non empty string to save a list of 
                                  # installed packages!
LOG=$0.log                        # Log file name & location
RSYNCCONF=(--delete)              # Additional rsync flags  

## SSH Settings
TOSSH="my.backup.com"             # What ssh server stores the backups?
FROMSSH=""                        # From what ssh server should the files be 
                                  # backuped?
                                  # For several reasons TOSSH and FROMSSH cannot
                                  # be used at the same time!
TOSSHUSER="backup"                # The ssh user of the system on which the 
                                  # backup will be created
TOSSHPORT=22                      # The ssh port of the system on which the 
                                  # backup will be created  
FROMSSHUSER=""                    # The ssh user of the system from which the 
                                  # files will be backed up
FROMSSHPORT=22                    # The ssh port of the system from which the 
                                  # files will be backed up
WEEKS=5                           # For how many weeks shall we save backups? 
                                  # This will keep weekly backups for at most 5 
                                  # weeks.

Crontab example

Create a backup every two hours (use flock to prevent duplicate scripts from running):

0 */2 * * * flock -n ~/backup.lock ~/backup.sh

Exclude file example

This example can be used for a full system backup (use only "/" as source for a full system backup). Copied from the Arch Wiki.

/dev/*
/proc/*
/sys/*
/tmp/*
/run/*
/mnt/*
/media/*
/lost+found

Inspiration