2gusia (2gusia) wrote,
2gusia
2gusia

Скрипт удаления ненужных zfs снапшотов

ZFS снапшоты - прекрасная штука. Но если надо удалить через вебгуй десятки автоматически созданных снапшотов - это становится проблемой. А я как раз сейчас обрабатываю напильником скрипт для zfs send-recv бекапа и автоматических снапшотов у меня - завались. Так что, взяв за основу скрипт от Oleg Pyzhov, чутка его поправил. Потому как оригинальный скрипт, запущенный без параметров, молча побил мне все backup снапшоты. Что меня не обрадовало ни разу.

Архив лежит тут
Пример использования
./delsnap Pool/Test 2 auto
Переберёт все снапшоты вида Pool/Test@auto..., оставит из них два самых свежих, остальные удалит.
Полезно, например, при необходимости удалить автоматически созданные в nas4free снапшоты. Или удалении старых снапшотов, созданных при архивировании.
Если третий параметр опустить, по умолчанию берёт префикс backup, используемый в других скриптах от Oleg Pyzhov
Последний снапшот рекомендую оставлять, но если надо убить - второй параметр ставим 0.

на всякий случай текст скрипта  - под катом

#!/bin/bash
# initial version by Oleg Pyzhov, see http://forum.ixbt.com/topic.cgi?id=11:44629:3826#3826
# minor editing by MikeMac
# A script for delete all but last N snapshots with name @name
# usage: ./delsnap
# example: ./delsnap Pool/Test 2 backup

backpool=$1
MAXSNAPBACKPOOL=$2
PREFIX4DELETE=$3

#default for PREFIX4DELETE is backup for compatibility with initial version
if [[ $PREFIX4DELETE == "" ]]; then
PREFIX4DELETE="backup"
fi


if [ -n "$backpool" ]; then
if [ -n "$MAXSNAPBACKPOOL" ]; then


numsnap=`zfs list -H -o name -t snapshot|grep "${backpool}@$PREFIX4DELETE"|wc|awk '{ print $1 }'`
let MAXSNAPBACKPOOL=numsnap-MAXSNAPBACKPOOL >/dev/null
if [ $MAXSNAPBACKPOOL -gt 0 ] ; then
for d in `zfs list -H -o name -t snapshot|grep "${backpool}@$PREFIX4DELETE"|/usr/bin/head -n"$MAXSNAPBACKPOOL"`; do
zfs destroy ${d}
done
echo $MAXSNAPBACKPOOL" snapshot(s) deleted"
else
echo no snapshots to delete
fi
else
echo ERROR please provide number of snapshots to keep, i.e. 2
exit 1
fi
else
echo ERROR please provide dataset name, i.e. Pool/Dataset
exit 1
fi


Однако, советую скачать и разархивировать куда-то в папку NAS, напомню, командой
tar -xvf delsnap.tar
Tags: backup, nas, nas4free, zfs
Subscribe

  • Статья про SSD Apacer в NAS

    Сегодня после длительной борьбы с web-редактором IXBT Live (который оказался не совместимым с Google Docs), наконец, опубликовали мой опус про SSD,…

  • OpenZFS и XigmaNAS

    Месяц назад я писал про Open ZFS. Там были мысли о том, когда он будет доступен в XogmaNAS. А в конце декабря зацепился на эту тему языками с…

  • Как провожают жесткие диски

    Сдох у меня жесткий диск в NAS Как видно - из SMART отпахал 70428 часов, то есть если 24/7 - больше 8 лет. И, я вам скажу, он не просто крутился…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 9 comments