Unison setup guide
Install Unison
Unison will need to be installed on both servers that are sharing files.
yum install unison
apt-get install unison
Configuration of unison
Before configuring unison itself, you need to ensure that the hosts have shared keys (since this connection is made via SSH).
ssh-keygen -t rsa
ssh-copy-id root@otherserver
Once that's sorted, the unison service itself can be configured.
default unison config file:
/root/.unison/default.prf
root = /
root = ssh://b4sed-01//
path = var/spool/cron/
path = etc/passwd
path = etc/shadow
path = etc/group
path = etc/motd
path = etc/drbd.conf
path = etc/cluster/cluster.conf
path = etc/php.ini
path = etc/nginx/
ignore = Name access.log*
To have unison run automatically, you'll need to configure a cron:
vi /usr/local/bin/sync.sh
Contents of the file:
#!/bin/bash
# improved file sync, cleans up properly after itself. Written by Matthew Ife
# [email protected]
SISTER=ABC-WEBDB-01
[ -f /var/run/file_sync.pid ] && exit 1;
trap "{
rm /var/run/file_sync.pid;
exit;
}" EXIT;
trap "{
echo 'Bailing out!' 1>&2
ssh -T -p2020 root@$SISTER <<<'killall unison; exit' &>/dev/null
}" KILL ABRT INT TERM HUP SEGV
touch /var/run/file_sync.pid
/usr/bin/unison -sshargs "-p 2020" -batch -terse -silent -owner -group -numericids -prefer /
Once added, then the cron needs setting up
crontab -e
* * * * * /usr/local/bin/sync.sh > /root/.unison/unison.log
You would then need to add a cron on the 2nd server, you'll need to add this with the '-prefer' omitted, as below:
#!/bin/bash
# improved file sync, cleans up properly after itself. Written by Matthew Ife
# [email protected]
SISTER=ABC-WEBDB-01
[ -f /var/run/file_sync.pid ] && exit 1;
trap "{
rm /var/run/file_sync.pid;
exit;
}" EXIT;
trap "{
echo 'Bailing out!' 1>&2
ssh -T -p2020 root@$SISTER <<<'killall unison; exit' &>/dev/null
}" KILL ABRT INT TERM HUP SEGV
touch /var/run/file_sync.pid
/usr/bin/unison -sshargs "-p 2020" -batch -terse -silent -owner -group -numericids /