zfssnap.sh 715 B

123456789101112131415161718192021222324252627282930313233
  1. #!/bin/sh
  2. SNAPDATE=`date "+%y%m%d"`
  3. ZROOT="zroot"
  4. ZFS="/sbin/zfs "
  5. # Seven day ago
  6. # -------------
  7. SEVEND=`date -j -v"-7d" +"%s"`
  8. for z in ROOT usr usr/home JAILS
  9. do
  10. echo "Creating snapshot tree at "${ZROOT}"@"${SNAPDATE}
  11. ${ZFS} snap -r ${ZROOT}/${z}@${SNAPDATE}
  12. if [ ${?} -ne 0 ]; then
  13. echo "unable to create a snapshot for ${ZROOT} at ${SNAPDATE}."
  14. fi
  15. echo "Cleaning " ${ZROOT}/${z} "snapshots."
  16. for i in `${ZFS} list -d 1 -H -t snap -o name -r ${ZROOT}/${z}`
  17. do
  18. SNAPCREATED=`${ZFS} list -Hp -t snap -o creation ${i}`
  19. if [ ${?} -eq 0 ]
  20. then
  21. di=`expr ${SNAPCREATED} - ${SEVEND}`
  22. if [ ${di} -lt 0 ]
  23. then
  24. echo "removing " ${i}
  25. ${ZFS} destroy -r ${i}
  26. fi
  27. fi
  28. done
  29. done