added support to create remote snapshots

This commit is contained in:
Fredrik Eriksson
2018-12-27 07:55:06 +01:00
parent 8adf8f14f8
commit eee2f12004
3 changed files with 72 additions and 18 deletions

View File

@ -13,7 +13,7 @@ logger = 'zsnapper'
class ZFSSnapshotError(Exception):
pass
def do_zfs_command(args, sudo, pipecmd=None, zfs_cmd=[zfs_bin]):
def do_zfs_command(args, sudo, zfs_cmd, pipecmd=None):
cmd = []
sudopw = None
if sudo:
@ -52,9 +52,10 @@ def do_zfs_command(args, sudo, pipecmd=None, zfs_cmd=[zfs_bin]):
def send_snapshot(
fs,
snap,
snap,
remote_zfs_cmd,
remote_target,
zfs_cmd=[zfs_bin],
sudo=False,
send_opts=[],
recv_opts=[],
@ -74,18 +75,18 @@ def send_snapshot(
pipecmd = remote_zfs_cmd + [ 'receive' ] + recv_opts + [ remote_target ]
do_zfs_command(args, sudo, pipecmd=pipecmd)
do_zfs_command(args, sudo, zfs_cmd, pipecmd=pipecmd)
def create_snapshot(fs, sudo=False):
def create_snapshot(fs, sudo=False, zfs_cmd=[zfs_bin]):
d = datetime.datetime.now().strftime(time_format)
args = ['snapshot', '{}@{}'.format(fs, d)]
do_zfs_command(args, sudo)
do_zfs_command(args, sudo, zfs_cmd)
def get_filesystems(sudo=False, zfs_cmd=[zfs_bin]):
args = ['list', '-H']
out = do_zfs_command(args, sudo, zfs_cmd=zfs_cmd)
out = do_zfs_command(args, sudo, zfs_cmd)
ret = set()
for row in out.splitlines():
@ -96,7 +97,7 @@ def get_filesystems(sudo=False, zfs_cmd=[zfs_bin]):
def get_snapshots(sudo=False, zfs_cmd=[zfs_bin]):
args = [ 'list', '-H', '-t', 'snapshot' ]
out = do_zfs_command(args, sudo, zfs_cmd=zfs_cmd)
out = do_zfs_command(args, sudo, zfs_cmd)
snapshots = {}
for row in out.splitlines():
@ -115,10 +116,10 @@ def get_snapshots(sudo=False, zfs_cmd=[zfs_bin]):
return snapshots
def remove_snapshot(fs, date, sudo=False):
def remove_snapshot(fs, date, sudo=False, zfs_cmd=[zfs_bin]):
date = date.strftime(time_format)
args = [ 'destroy', '{}@{}'.format(fs, date) ]
do_zfs_command(args, sudo)
do_zfs_command(args, sudo, zfs_cmd)
def weed_snapshots(