Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/samssausages/simple-snapshot-zfs
Simple script to create ZFS Snapshots, but it has a check to only snapshot if the dataset has been written to. Also prunes the snapshots to keep the 100 most recent
https://github.com/samssausages/simple-snapshot-zfs
Last synced: 18 days ago
JSON representation
Simple script to create ZFS Snapshots, but it has a check to only snapshot if the dataset has been written to. Also prunes the snapshots to keep the 100 most recent
- Host: GitHub
- URL: https://github.com/samssausages/simple-snapshot-zfs
- Owner: samssausages
- Created: 2023-03-22T04:37:32.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2023-10-16T21:28:50.000Z (over 1 year ago)
- Last Synced: 2023-10-17T09:42:55.796Z (over 1 year ago)
- Language: Shell
- Size: 25.4 KB
- Stars: 9
- Watchers: 3
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# simple-snapshot-zfs
This is a simple script to create ZFS Snapshots, designed to overcome snapshots with 0 changes cluttering your snapshot list.
To run, simply add script as a cron job.If you use 3rd party programs to snapshot/restore, and use multiple snapshot policies, then don't use this script. Some 3rd party programs rely on the 0 change snapshots for their date/time stamps when running restores/clones.
In my case, I only have a few datasets that I self-manage. So it works great for me, as I want to avoid the visual clutter and don't rely on 3rd party systems for snapshots or restores.## Key features
* Runs a check to see if the dataset has been written to before snapshot, using the 'written' property
* Prunes snapshots by keeping only the most recent 100 (adjustable)
* Provides output to let you know how many snaps and how much space is taken up## Usage
Update script with your dataset names, including the pool. Don't add a leading `/`, should look like: `pool/dataset1`
Run script manually or add it to a cron shedule
### Sample output
```
Starting Snapshot 2023-03-23-23:21
_____________________________________________________________
No changes detected in pool/dataset1. No snapshot created.
Total snapshots for pool/admin: 3
Space used by snapshots for pool/dataset1: 239K
_____________________________________________________________
Snapshot created: pool/dataset1/code@2023-03-23-23:21
Total snapshots for pool/admin/code: 20
Space used by snapshots for pool/dataset1/code: 18.0M
_____________________________________________________________
No changes detected in pool/dataset2. No snapshot created.
Total snapshots for pool/admin/certs: 3
Space used by snapshots for pool/dataset2: 947K
_____________________________________________________________
No changes detected in pool/documents. No snapshot created.
Total snapshots for pool/documents: 5
Space used by snapshots for pool/documents: 17.5G
_____________________________________________________________
No changes detected in pool/documents/nextcloud. No snapshot created.
Total snapshots for pool/documents/nextcloud: 4
Space used by snapshots for pool/documents/nextcloud: 20.0G
_____________________________________________________________
----------------------------Done!----------------------------```
# Changelog
### v0.9
Added validation for SHANPSHOT_QTY & DATASETS
Updated to use mapfile instead of readarray for SNAPSHOTS array
Added Error Checking & reporting for mapfile, zfs list, zfs get, zfs snapshot, zfs destroy
changed timestamp to include seconds to prevent duplicate snapshot names if < 1 minute between snapshots
changed snapshot name to add @simplesnap_ to differentiate from other snapshots
Made snapshot name configurable
Simplified use of Timestamp Variable in script & changed to SNAPSHOTNAME
### v0.15
Address coding standards & issues
Define user configurable section, formatting
Updated Timestamp Formatting for readability
### v0.10
Initial Commit