https://github.com/bashclub/zfs-housekeeping
Originally 'zfs-keep-and-clean' - this script scans your zpool and removes snapshots older than those you want to keep.
https://github.com/bashclub/zfs-housekeeping
zfs zfs-autosnapshot-rotation zfs-backup zfs-snapshots zfsonlinux
Last synced: about 1 year ago
JSON representation
Originally 'zfs-keep-and-clean' - this script scans your zpool and removes snapshots older than those you want to keep.
- Host: GitHub
- URL: https://github.com/bashclub/zfs-housekeeping
- Owner: bashclub
- Created: 2021-04-24T21:45:41.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2022-12-28T13:08:02.000Z (over 3 years ago)
- Last Synced: 2025-03-27T16:11:55.639Z (about 1 year ago)
- Topics: zfs, zfs-autosnapshot-rotation, zfs-backup, zfs-snapshots, zfsonlinux
- Language: Shell
- Homepage: https://sysops.tv
- Size: 13.7 KB
- Stars: 14
- Watchers: 6
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# zfs-keep-and-clean
## Script cleansnaps.sh (neu)
Snapshots nach Datasets und Muster im Snapshotnamen filtern und ggf. löschen.
Es können alle bis auf die letzten x Snapshots behalten werden (-k keep).
Zu löschende Snapshots werden mit einem '-' gekennzeichnet.
### Aufruf:
```
root@zfsrasp~# ./cleansnaps.sh -h
Aufruf: cleansnaps.sh [-htf] [-k keep] [Snapshotfilter]
-h Hilfe Anzeigen
-t Testmodus. Simulation von löschen ohne Nachfragen (benötigt -k)
-f Echtmodus. Snapshots löschen ohne Nachfragen (benötigt -k)
-k Anzahl der letzten Snapshots die behalten werden sollen.
Rest wird gelöscht. Ohne -t oder -f kommt Abfrage ob gelöscht werden soll.
```
### Beispiele:
Nur Filtern (ohne löschen):
```
root@zfsrasp:~# ./cleansnaps.sh backup frequent
# Gefilterte Datasets:
NAME USED AVAIL REFER MOUNTPOINT
backup 3.93M 3.62G 24K /backup
backup/smbshr 182K 3.62G 50.5K /backup/smbshr
# Dataset: backup
# Snapfilter: frequent
# Anzahl Snaps: 4
# Liste Snaps:
+ backup@zfs-auto-snap_frequent-2021-01-01-2030
+ backup@zfs-auto-snap_frequent-2021-01-01-2045
+ backup@zfs-auto-snap_frequent-2021-01-01-2100
+ backup@zfs-auto-snap_frequent-2021-01-01-2115
# Dataset: backup/smbshr
# Snapfilter: frequent
# Anzahl Snaps: 6
# Liste Snaps:
+ backup/smbshr@zfs-auto-snap_frequent-2020-12-28-1145
+ backup/smbshr@zfs-auto-snap_frequent-2020-12-28-1200
+ backup/smbshr@zfs-auto-snap_frequent-2021-01-01-2030
+ backup/smbshr@zfs-auto-snap_frequent-2021-01-01-2045
+ backup/smbshr@zfs-auto-snap_frequent-2021-01-01-2100
+ backup/smbshr@zfs-auto-snap_frequent-2021-01-01-2115
root@zfsrasp:~#
```
Interaktiv - Filtern und alle außer die letzten 10 löschen:
```
root@zfsrasp:~# ./cleansnaps.sh -k 10 backup$ daily
# Gefilterte Datasets:
NAME USED AVAIL REFER MOUNTPOINT
backup 4.00M 3.62G 24K /backup
# Dataset: backup
# Snapfilter: daily
# Anzahl Snaps: 12
# Behalte: 10
# Anzahl Del. Snaps: 2
# Liste Snaps:
- backup@zfs-auto-snap_daily-2020-12-21-0525
- backup@zfs-auto-snap_daily-2020-12-22-0525
+ backup@zfs-auto-snap_daily-2020-12-23-0525
+ backup@zfs-auto-snap_daily-2020-12-24-0525
+ backup@zfs-auto-snap_daily-2020-12-25-0525
+ backup@zfs-auto-snap_daily-2020-12-26-0525
+ backup@zfs-auto-snap_daily-2020-12-27-0525
+ backup@zfs-auto-snap_daily-2020-12-28-0525
+ backup@zfs-auto-snap_daily-2020-12-29-0525
+ backup@zfs-auto-snap_daily-2020-12-30-0525
+ backup@zfs-auto-snap_daily-2020-12-31-0525
+ backup@zfs-auto-snap_daily-2021-01-01-0525
> Snapshots (2 von 12) mit J löschen (Return = weiter): J
% zfs destroy wird ausgeführt:
will destroy backup@zfs-auto-snap_daily-2020-12-21-0525
will reclaim 0B
will destroy backup@zfs-auto-snap_daily-2020-12-22-0525
will reclaim 0B
% Liste nach zfs destroy:
+ backup@zfs-auto-snap_daily-2020-12-23-0525
+ backup@zfs-auto-snap_daily-2020-12-24-0525
+ backup@zfs-auto-snap_daily-2020-12-25-0525
+ backup@zfs-auto-snap_daily-2020-12-26-0525
+ backup@zfs-auto-snap_daily-2020-12-27-0525
+ backup@zfs-auto-snap_daily-2020-12-28-0525
+ backup@zfs-auto-snap_daily-2020-12-29-0525
+ backup@zfs-auto-snap_daily-2020-12-30-0525
+ backup@zfs-auto-snap_daily-2020-12-31-0525
+ backup@zfs-auto-snap_daily-2021-01-01-0525
root@zfsrasp:~#
```
Testmodus - löschen nur simulieren (ohne Nachfragen):
```
root@zfsrasp:~# ./cleansnaps.sh -t -k 5 backup$ daily
# Gefilterte Datasets:
NAME USED AVAIL REFER MOUNTPOINT
backup 3.98M 3.62G 24K /backup
# Dataset: backup
# Snapfilter: daily
# Anzahl Snaps: 10
# Behalte: 5
# Anzahl Del. Snaps: 5
# Liste Snaps:
- backup@zfs-auto-snap_daily-2020-12-23-0525
- backup@zfs-auto-snap_daily-2020-12-24-0525
- backup@zfs-auto-snap_daily-2020-12-25-0525
- backup@zfs-auto-snap_daily-2020-12-26-0525
- backup@zfs-auto-snap_daily-2020-12-27-0525
+ backup@zfs-auto-snap_daily-2020-12-28-0525
+ backup@zfs-auto-snap_daily-2020-12-29-0525
+ backup@zfs-auto-snap_daily-2020-12-30-0525
+ backup@zfs-auto-snap_daily-2020-12-31-0525
+ backup@zfs-auto-snap_daily-2021-01-01-0525
# Testmodus - Für folgende Snapshots würde ein destroy ausgeführt:
backup@zfs-auto-snap_daily-2020-12-23-0525 creation Wed Dec 23 6:25 2020 -
backup@zfs-auto-snap_daily-2020-12-24-0525 creation Thu Dec 24 6:25 2020 -
backup@zfs-auto-snap_daily-2020-12-25-0525 creation Fri Dec 25 6:25 2020 -
backup@zfs-auto-snap_daily-2020-12-26-0525 creation Sat Dec 26 6:25 2020 -
backup@zfs-auto-snap_daily-2020-12-27-0525 creation Sun Dec 27 6:25 2020 -
root@zfsrasp:~#
```
Forcemodus - löschen ohne Nachfragen:
```
root@zfsrasp:~# ./cleansnaps.sh -f -k 6 backup frequent
# Gefilterte Datasets:
NAME USED AVAIL REFER MOUNTPOINT
backup 3.98M 3.62G 24K /backup
backup/smbshr 182K 3.62G 50.5K /backup/smbshr
# Dataset: backup
# Snapfilter: frequent
# Anzahl Snaps: 4
# Behalte: 6
# Anzahl Del. Snaps: 0
# Liste Snaps:
+ backup@zfs-auto-snap_frequent-2021-01-01-2000
+ backup@zfs-auto-snap_frequent-2021-01-01-2015
+ backup@zfs-auto-snap_frequent-2021-01-01-2030
+ backup@zfs-auto-snap_frequent-2021-01-01-2045
% Keine Snapshots zum löschen
# Dataset: backup/smbshr
# Snapfilter: frequent
# Anzahl Snaps: 8
# Behalte: 6
# Anzahl Del. Snaps: 2
# Liste Snaps:
- backup/smbshr@zfs-auto-snap_frequent-2020-12-21-2130
- backup/smbshr@zfs-auto-snap_frequent-2020-12-21-2145
+ backup/smbshr@zfs-auto-snap_frequent-2020-12-28-1145
+ backup/smbshr@zfs-auto-snap_frequent-2020-12-28-1200
+ backup/smbshr@zfs-auto-snap_frequent-2021-01-01-2000
+ backup/smbshr@zfs-auto-snap_frequent-2021-01-01-2015
+ backup/smbshr@zfs-auto-snap_frequent-2021-01-01-2030
+ backup/smbshr@zfs-auto-snap_frequent-2021-01-01-2045
% zfs destroy wird ausgeführt:
will destroy backup/smbshr@zfs-auto-snap_frequent-2020-12-21-2130
will reclaim 0B
will destroy backup/smbshr@zfs-auto-snap_frequent-2020-12-21-2145
will reclaim 0B
% Liste nach zfs destroy:
+ backup/smbshr@zfs-auto-snap_frequent-2020-12-28-1145
+ backup/smbshr@zfs-auto-snap_frequent-2020-12-28-1200
+ backup/smbshr@zfs-auto-snap_frequent-2021-01-01-2000
+ backup/smbshr@zfs-auto-snap_frequent-2021-01-01-2015
+ backup/smbshr@zfs-auto-snap_frequent-2021-01-01-2030
+ backup/smbshr@zfs-auto-snap_frequent-2021-01-01-2045
root@zfsrasp:~#
```