$config = { # if set to non-zero, will write output to /tmp/snapShot instead of executing commands 'TESTING' => 1, # if set to non-zero, sets TESTING to 1, then dumps some information on STDOUT when processing 'DEBUG' => 0, # amount of slop in deciding whether to make a snapshot or not 'slop' => '2 hour', # this is an array reference of the columns in standard zfs list output 'listingKeys' => [ qw/name used avail refer mountpoint/ ], # Information on how to read/create snapshots 'snapshot' => { # template used for creating a snapshot using strftime 'template' => 'auto-%Y-%m-%d_%H-%M', # regex to parse snapshots created above. Only snapshots matching # this will be processed 'parse' => 'auto-(\d{4})-(\d{2})-(\d{2})_(\d{2})-(\d{2})', # Which fields result from parsing above 'parseFields' => [ qw/year month day hour minute/ ], }, # the datasets we care about 'datasets' => { # this will match storage/nfs_root and all child datasets (recursive) 'storage\/nfs_root' => { 'frequency' => '1 day', 'retention' => '7 day', 'recursive' => 1 }, # simple match for storage/backups 'storage\/backups' => { 'frequency' => '1 day', 'retention' => '7 day', 'recursive' => 0 }, # this would match anything in dataset storage which has a child ending in disk or lvm, where disk may optionally be followed # by a single character (disk1, disk0, diska, disk). Note the use of parantheses around the alternating patterns disk and lvm 'storage\/.*((disk.?)|(lvm))' => { 'frequency' => '1 month', 'retention' => '7 month', 'recursive' => 0 } } };