Difference between revisions of "Auto Update Backup"

From SingletonMillerWiki
Jump to: navigation, search
m (Setup Cron)
m (Setup Cron)
Line 88: Line 88:
 
Edit /etc/crontab [http://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/]
 
Edit /etc/crontab [http://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/]
  
<pre>$sudo crontab -e</pre>
+
<pre>$crontab -e</pre>
  
 
add the following to the end
 
add the following to the end
  
<pre> 01 4    * * * /usr/local/bin/AutoUpdateBackup.sh </pre>
+
<pre>01 04 * * * root /usr/local/bin/AutoUpdateBackup.sh</pre>
  
 
Your RPi will now auto update and backup at 04:01 every day.
 
Your RPi will now auto update and backup at 04:01 every day.
 +
You also need to make sure that your user has root privledges and doesn't need to enter a password. This is the default for the 'Pi' user, but if you add new users you need to modify the <code>visudo/code> file.
  
 
== Log File ==
 
== Log File ==

Revision as of 05:23, 2 June 2013


The goal here is to get a network connected Raspberry Pi to periodically update and backup itself up to an external device or network share.

This is heavily based on the developments presented here [1]

Installation

Copy the script to the home folder on your Raspberry Pi using wget.

cd ~
wget https://raw.github.com/martinrgmiller/RPiAutoBackup/master/AutoUpdateBackup.sh

Create a Backup Location

This location must not be physically on the Pi's SD card, it should be an external USB drive or other share on your network.

CIFS share

The script supports temporary and direct mounting of a network share. Alternatively you can auto mount the shares. Accessing Network Shares.

You must make sure that the location for the backup file is mounted and writeable.

Setup the script

The header of the script header documents the user defined parameters

    # EXTDIR must be external i.e. not on the SD card for example a usb stick or network share
    # BACKUPDIR is the location to write the backup on EXTDIR
    # PURGE determines if old backups are deleted before zipping the latest sucessful backup, PURGE=false
    # CIFSHOST is the optional network share host name or address, comment out to disable mounting a CIFSSHARE
    # CIFSSHARE is the share on the CIFSHOST, required if CIFSHOST is enabled
    # CIFSCRED is the local path to the CIFS credentials, required if CIFSHOST is enabled
    # CIFSUID is the users who has write permissions to CIFSSHARE, required if CIFSHOST is enabled

Edit these as required

CIFS example

    EXTDIR=/media/cifstemp/Public
    BACKUPDIR=$EXTDIR/RPi_autobuild_backup
    PURGE=false
    CIFSHOST=//192.168.0.8
    CIFSSHARE=Public
    CIFSCRED=/home/raspberrypi/cifs.cred
    CIFSUID=raspberrypi

External HDD example

Manually mount your USB drive first.

sudo mkdir /media/usbdrive
sudo mount /dev/sda1 /media/usbdrive

Edit the script settings to match

    EXTDIR=/media/usbdrive
    BACKUPDIR=$EXTDIR/RPi_autobuild_backup
    PURGE=true
    #CIFSHOST=//192.168.0.8
    CIFSSHARE=Public
    CIFSCRED=/home/raspberrypi/cifs.cred
    CIFSUID=raspberrypi

Here, CIFS mounting is disabled and PURGE has optionally been set to true to delete old backup off the usb drive due to capacity limitations.

Test the Script

$sudo sh AutoUpdateBackup.sh

Move the script to a better location

Assuming you've resolved all the permissions and the scripts runs, copy the script for local admin use only. This isn't strictly necessary as cron can run a script from anywhere, but its 'neater'.

sudo cp /home/jack/AutoUpdateBackup.sh /usr/local/bin/

Modify the permissions of the script to make it executable

sudo chmod +x /usr/local/bin/AutoUpdateBackup.sh

Setup Cron

Edit /etc/crontab [2]

$crontab -e

add the following to the end

01 04 * * * root /usr/local/bin/AutoUpdateBackup.sh

Your RPi will now auto update and backup at 04:01 every day. You also need to make sure that your user has root privledges and doesn't need to enter a password. This is the default for the 'Pi' user, but if you add new users you need to modify the visudo/code> file.

Log File

Optionally you can output the scripts efforts to a logfile.

Modify your crontab entry to

01 04 * * * /usr/local/bin/AutoUpdateBackup.sh >> /var/log/AutoUpdateBackup.log

Create an entry in <code> /etc/logrotate.d to rotate the log files

$sudo nano /etc/logrotate.d/rsyslog

after the line /var/log/messages add the following

/var/log/AutoUpdateBackup.log

References

  1. The Raspberry Pi Backup Thread
  2. how-do-i-add-jobs-to-cron-under-linux
  3. can-a-raspberry-pi-be-used-to-create-a-backup-of-itself