Quantcast
Viewing all articles
Browse latest Browse all 3

How to backup from a Western Digital Sharespace to another Sharespace

There is a newer version of this script available here.

You might need this: How to enable SSH on a Western Digital ShareSpace

For a script running from a FreeBSD server check this script.
~~~
Lately I've been busy with making a backup script to automate the backup of a WD Sharespace drive.

This script has been made to backup between two Sharespace drives.

The script works quite simple. In a endless loop it keeps on running when you start it to the background with: ./backup.sh &

It scans for the shares on your master drive and it will Rsync it to your slave drive on the share backup.

Put this script on your slave drive in /root/backup.sh

If you decide to modify this script please leave my name in the script.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/bin/sh
time=5
src_ip="192.168.3.3"
log="/root/backup.log"
 
# Written by Marius van Witzenburg
# http://
 
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/sbin
PID=$$
cleanup() {
    rm -f ${log}
    return $?
}
s_hup() {
    echo -e "n*** SIGHUP! Ignoring ***n"
    cleanup
    #exit $?
}
s_int() {
    echo -en "n*** SIGINT! Exiting ***n"
    kill ${JOB}
    exit $?
}
s_term() {
    echo -en "n*** SIGTERM! Exiting ***n"
    kill ${JOB}
    exit $?
}
 
trap s_hup SIGHUP
trap s_int SIGINT
trap s_term SIGTERM
 
echo "Having a rest for the first run..." > ${log}
sleep 30 &
JOB=$!
wait ${JOB}
 
echo "Running backup..." >> ${log}
while [ "true" ]
do
    for x in `ssh ${src_ip} ls -l /shares/| grep "^d" | awk '{ print $9 }'`
    do
        if [ ! -z ${x} ]
        then
            output=''
            if [ ! -z "`expr ${x} : '(usb[0-9]-[0-9]share[0-9])'`" ]
            then
                if [ -d "/shares/${x}" ]
                then
                    echo -e "USB Syncing '/shares/${x}' to '/shares/${x}'n" >> $log
                    rsync -qau --no-t --checksum --delete ${src_ip}:/shares/${x}/ /shares/${x}/ & 2>> ${log} 1> /dev/null
                    JOB=$!
                    wait ${JOB}
                    echo -e "n${JOB} -- finished.nn" >> ${log}
                else
                    echo -e "Skipping USB for '/shares/${x}'n" >> ${log}
                fi
            else
                echo -e "Syncing '/shares/${x}' to '/shares/backup/${x}'n" >> $log
                rsync -qau --no-t --checksum --delete ${src_ip}:/shares/${x}/ /shares/backup/${x}/ & 2>> ${log} 1> /dev/null
                JOB=$!
                wait ${JOB}
                echo -e "n${JOB} -- finished.nn" >> ${log}
            fi
        fi
    done
    message=`cat ${log}`
    echo -e "From: noreply@nTo: info@nSubject: ShareSpace backup output.nn${message}" | /usr/sbin/msmtp info@
    echo -e "Waiting for cycle (${time} minutes)...n" >> ${log}
    sleep `expr ${time} * 60` &
    JOB=$!
    wait ${JOB}
    echo "Running cycle..." > ${log}
done
# EOF

Comments and donations are more than welcome Image may be NSFW.
Clik here to view.
:-)


Viewing all articles
Browse latest Browse all 3

Trending Articles