zfs_mgmt 0.3.4 → 0.3.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cf232dcb9239cd6f1858e5f26430227bf19c8c33a8b537708fa9cfe1ac7fcde4
4
- data.tar.gz: beaf85ba9e0fcadd8dd03962989592b1d33415cbafadfbf0b3c654f243fc7c0e
3
+ metadata.gz: bce5f90411d08b54334f8694e7956f718c1e63995f2c799b95cb170b302c2c8a
4
+ data.tar.gz: 1d82a41657f40fe371814210be392d8c34be333816530fcff6a67ae778dc120b
5
5
  SHA512:
6
- metadata.gz: 831fb028c42c67942afbac8b35ec6b908ab10c0c9acb3183b19facd32e009ea512629c86af2ad3bc7f8dff9a2c31cf90e4e0317a4c1e32f72a297da3fc826b19
7
- data.tar.gz: 7a3d8b9c734302d828298b6507d31f1539cc34739f41ff0fc8adddd1c3842a78dbd62b8ba5876ab0893ffb5f8295e187ba1e4232f6aaadfd211fffb0d00f0d0e
6
+ metadata.gz: e500b4cc3b155528c470c5aa26338a948e783a5f951a7a5e0d6c05b6739c07cccd6bfe0a1dd001a34722f47e611cc85e2f931d8e3cbca58e37b0f3b0d23606da
7
+ data.tar.gz: d3ca6969f760260449f85d99e05133f542700f9d0322a84f771cd157d3ec0729c2e86dc33f0326c53b1f35065cb28b879bbad85c6e422c4bae95b20cc9d21f06
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- zfs_mgmt (0.3.4)
4
+ zfs_mgmt (0.3.5)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -180,7 +180,11 @@ oldest and unless the property is set to youngest oldest will be used.
180
180
  ### zfsmgmt:snapshot
181
181
  If this property is 'true' then create a snapshot in the format of
182
182
  zfsmgmt-%FT%T%z. If this property is 'recursive' then create a
183
- recursive snapshot of this zfs.
183
+ recursive snapshot of this zfs, but only on zfs where this property is
184
+ local. If this property is set to the string 'local' and the property
185
+ is set locally, it will create a snapshot. The intention is that you
186
+ would use 'local' when you want a zfs snapshot for the filesystem, but
187
+ NOT it's descendant filesystems.
184
188
 
185
189
  ### zfsmgmt:snap_prefix
186
190
  Change the zfsmgmt portion of created snapshots, ie: 'autosnap' would
data/bin/zfsmgr CHANGED
@@ -36,7 +36,9 @@ class ZfsMgr < Thor
36
36
  desc "snapshot SUBCOMMAND ...ARGS", "manage snapshots"
37
37
  subcommand "snapshot", Snapshot
38
38
  desc "list SUBCOMMAND ...ARGS", "list filesystems"
39
- subcommand "list", ZfsMgrList
39
+ subcommand "list", ZfsMgmtList
40
+ desc "restic SUBCOMMAND ...ARGS", "backup zfs to restic"
41
+ subcommand "restic", ZfsMgmtRestic
40
42
  end
41
43
 
42
44
  ZfsMgr.start(ARGV)
data/lib/zfs_mgmt.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  # coding: utf-8
2
2
  require "zfs_mgmt/version"
3
+ require "zfs_mgmt/restic"
3
4
  require 'pp'
4
5
  require 'date'
5
6
  require 'logger'
@@ -310,8 +311,15 @@ module ZfsMgmt
310
311
  end
311
312
  dt = DateTime.now
312
313
  zfsget(properties: custom_properties()).each do |zfs,props|
314
+ unless /#{filter}/ =~ zfs
315
+ next
316
+ end
313
317
  # zfs must have snapshot set to true or recursive
314
- if props.has_key?('zfsmgmt:snapshot') and props['zfsmgmt:snapshot'] == 'true' or ( props['zfsmgmt:snapshot'] == 'recursive' and props['zfsmgmt:snapshot@source'] == 'local' )
318
+ if props.has_key?('zfsmgmt:snapshot') and
319
+ props['zfsmgmt:snapshot'] == 'true' or
320
+ ( props['zfsmgmt:snapshot'] == 'recursive' and props['zfsmgmt:snapshot@source'] == 'local' ) or
321
+ ( props['zfsmgmt:snapshot'] == 'local' and props['zfsmgmt:snapshot@source'] == 'local' )
322
+
315
323
  prefix = ( props.has_key?('zfsmgmt:snap_prefix') ? props['zfsmgmt:snap_prefix'] : 'zfsmgmt' )
316
324
  ts = ( props.has_key?('zfsmgmt:snap_timestamp') ? props['zfsmgmt:snap_timestamp'] : '%FT%T%z' )
317
325
  com = ['zfs','snapshot']
@@ -325,7 +333,7 @@ module ZfsMgmt
325
333
  end
326
334
  end
327
335
  end
328
- class ZfsMgrList < Thor
336
+ class ZfsMgmtList < Thor
329
337
  class_option :filter, :type => :string, :default => '.+',
330
338
  :desc => 'only act on zfs matching this regexp'
331
339
  desc "stale", "list all zfs with stale snapshots"
@@ -340,7 +348,7 @@ class ZfsMgrList < Thor
340
348
  last = snaps.keys.sort { |a,b| snaps[a]['creation'] <=> snaps[b]['creation'] }.last
341
349
  snap_time = Time.at(snaps[last]['creation'])
342
350
  if snap_time < cutoff
343
- table.rows << [zfs,last,snap_time]
351
+ table.rows << [zfs,last.split('@')[1],snap_time]
344
352
  end
345
353
  end
346
354
  if table.rows.count > 0
@@ -0,0 +1,33 @@
1
+
2
+ module ZfsMgmt::Restic
3
+ def self.backup(backup_type: 'incremental', force: false, filter: '.+')
4
+ pp backup_type, force, filter
5
+ end
6
+ end
7
+
8
+ class ZfsMgmtResticBackup < Thor
9
+ class_option :filter, :type => :string, :default => '.+',
10
+ :desc => 'only act on zfs matching this regexp'
11
+ class_option :force, :type => :boolean, :default => false,
12
+ :desc => 'force create this backup type, fail if it cannot be forced'
13
+ desc "incremental", "perform incremental backup"
14
+ def incremental()
15
+ ZfsMgmt::Restic.backup(backup_type: 'incremental', force: options[:force])
16
+ end
17
+ desc "differential", "perform differential backup"
18
+ def differential()
19
+ ZfsMgmt::Restic.backup(backup_type: 'differential', force: options[:force])
20
+ end
21
+ desc "full", "perform full backup"
22
+ def full()
23
+ ZfsMgmt::Restic.backup(backup_type: 'full', force: options[:force])
24
+ end
25
+ end
26
+
27
+ class ZfsMgmtRestic < Thor
28
+ desc "restic SUBCOMMAND ...ARGS", "backup all configured zfs to restic"
29
+ subcommand "backup", ZfsMgmtResticBackup
30
+
31
+ end
32
+
33
+
@@ -1,3 +1,3 @@
1
1
  module ZfsMgmt
2
- VERSION = "0.3.4"
2
+ VERSION = "0.3.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zfs_mgmt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aran Cox
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-12 00:00:00.000000000 Z
11
+ date: 2021-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -125,6 +125,7 @@ files:
125
125
  - bin/zfssendman
126
126
  - bin/zfssnapman
127
127
  - lib/zfs_mgmt.rb
128
+ - lib/zfs_mgmt/restic.rb
128
129
  - lib/zfs_mgmt/version.rb
129
130
  - zfs_mgmt.gemspec
130
131
  homepage: https://github.com/aranc23/zfs_mgmt