Hey folks,

Is anybody able to help a Solaris scripting newbie with this? I want to put 
together an automatic script to take snapshots on one system and send them 
across to another. I've shown the manual process works, but only have a very 
basic idea about how I'm going to automate this.

My current thinking is that I want to put together a cron job that will work 
along these lines:

- Run every 15 mins
- take a new snapshot of the pool
- send the snapshot to the remote system with zfs send / receive and ssh.
(am I right in thinking I can get ssh to work with no password if I create a 
public/private key pair? http://www.go2linux.org/ssh-login-using-no-password)
- send an e-mail alert if zfs send / receive fails for any reason (with the 
text of the failure message)
- send an e-mail alert if zfs send / receive takes longer than 15 minutes and 
clashes with the next attempt
- delete the oldest snapshot on both systems if the send / receive worked

Can anybody think of any potential problems I may have missed? 

Bearing in mind I've next to no experience in bash scripting, how does the 
following look?

**********************************************************************
#!/bin/bash

# Prepare variables for e-mail alerts
SUBJECT="zfs send / receive error"
EMAIL="[EMAIL PROTECTED]"

NEWSNAP="build filesystem + snapshot name here"
RESULTS=$(/usr/sbin/zfs snapshot $NEWSNAP)
# how do I check for a snapshot failure here?  Just look for non blank $RESULTS?
if $RESULTS; then
   # send e-mail
   /bin/mail -s $SUBJECT $EMAIL $RESULTS
   exit
fi

PREVIOUSSNAP="build filesystem + snapshot name here"
RESULTS=$(/usr/sbin/zfs send -i $NEWSNAP $PREVIOUSSNAP | ssh -l *user* 
*remote-system* /usr/sbin/zfs receive *filesystem*)
# again, how do I check for error messages here?  Do I just look for a blank 
$RESULTS to indicate success?
if $RESULTS ok; then
   OBSOLETESNAP="build filesystem + name here"
   zfs destroy $OBSOLETESNAP
   ssh -l *user* *remote-system* /usr/sbin/zfs destroy $OBSOLETESNAP
else 
   # send e-mail with error message
   /bin/mail -s $SUBJECT $EMAIL $RESULTS
fi
**********************************************************************

One concern I have is what happens if the send / receive takes longer than 15 
minutes. Do I need to check that manually, or will the script cope with this 
already? Can anybody confirm that it will behave as I am hoping in that the 
script will take the next snapshot, but the send / receive will fail and 
generate an e-mail alert?

thanks,

Ross
--
This message posted from opensolaris.org
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to