diff --git a/check-snapshot-age b/check-snapshot-age new file mode 100644 index 0000000..664d2c5 --- /dev/null +++ b/check-snapshot-age @@ -0,0 +1,37 @@ +#!/usr/bin/env python3 + +import subprocess +import re +import time + +#_snapshots = open("zfs.txt","r").read() +_snapshots = subprocess.check_output("/usr/sbin/zfs list -t snapshot -Hpo name,creation".split()) + +LABELS=("frequent","hourly","daily","weekly","monthly","yearly","backup-zfs","bashclub-zfs") +RE_LABELSEARCH = re.compile("|".join(LABELS)) +_datasets = {} +for _datastore,_snapshot,_creation in re.findall("^([\w_./-]+)@([\w_.-]+)\t(\d+)",_snapshots.decode('utf-8'),re.M): + if _datastore not in _datasets: + _datasets[_datastore] = {} + _label = RE_LABELSEARCH.search(_snapshot) + if _label: + _label = _label.group(0) + else: + _label = "other" + if _label not in _datasets[_datastore]: + _datasets[_datastore][_label] = [] + _datasets[_datastore][_label].append((_snapshot,int(_creation))) + +for _datastore in _datasets.keys(): + print(_datastore) + print("-"*40) + for _label in _datasets[_datastore].keys(): + _data = _datasets[_datastore][_label] + _first = time.strftime("%d.%m.%Y %H:%M:%S",time.localtime(_data[0][1])) + _last = time.strftime("%d.%m.%Y %H:%M:%S",time.localtime(_data[-1][1])) + _count = len(_data) + print(f" {_label} {_count}") + print(f" {_first} {_data[0][0]}") + if _count > 1: + print(f" {_last} {_data[-1][0]}") + print("")