Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- #to prep a new backup drive, insert into the drivecage, check logs for device, usually ada0 on my box, then
- #zpool create backup ada0 if the drive is actually ada0
- z=$1
- b=$2
- if [ -z $b ]; then
- echo "Usage: $0 zpool_source_name backup_destination_name"
- exit 1
- fi
- nd="${b}-$(date +"%F")"
- test -z "$(zpool list -H | egrep -w "^${b}" | awk '{print $1}')" && zpool import $b 2>/dev/null
- test -z "$(zpool list -H | egrep -w "^${b}" | awk '{print $1}')" && echo "Zpool \"${b}\" not found!" && exit 1
- echo STARTED ON `date`
- test -z "$(zfs list -H -t snapshot ${z}@${nd} 2>/dev/null | awk '{print $1}')" && zfs snapshot -r ${z}@${nd} || echo "Snapshot already exists."
- od="$(zfs list -H -t snapshot -o name | egrep ^${z}@${b}- | tail -2 | head -1 | cut -d "@" -f 2)"
- #Thanks Rob!
- for i in `zfs list -H -r -o name $z | awk {'print $1'}`; do
- if [ `zfs list -r -H -t snapshot ${b} 2>/dev/null | awk '{print $1}' | grep -c "${i}\@"` -gt 0 ];then
- zfs send -v -i ${i}@${od} ${i}@${nd} | zfs recv -F ${b}/${i} 2>/dev/null
- else
- zfs send -v ${i}@${nd} | zfs recv -F ${b}/${i} 2>/dev/null
- fi
- done
- zfs list -H -t snapshot -o name | egrep ^${z}@${b}- | sort -r | tail -n +8 | xargs -n 1 zfs destroy -r
- zfs list -H -t snapshot -o name | egrep ^${b}/${z}@${b}- | sort -r | tail -n +8 | xargs -n 1 zfs destroy -r
- zpool export $b
- echo FINISHED ON `date`
Advertisement
Add Comment
Please, Sign In to add comment