/zfs-housekeeping

Originally 'zfs-keep-and-clean' - this script scans your zpool and removes snapshots older than those you want to keep.

Primary LanguageShell

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] <Datasetfilter> [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> 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:~#