Compare commits
3 commits
8ce3217b16
...
3b1ef1eb41
Author | SHA1 | Date | |
---|---|---|---|
3b1ef1eb41 | |||
50fed682eb | |||
5ead4ba105 |
4 changed files with 18 additions and 8 deletions
|
@ -16,7 +16,14 @@ defaults = {
|
||||||
'/usr/bin/rsync',
|
'/usr/bin/rsync',
|
||||||
'/sbin/zfs',
|
'/sbin/zfs',
|
||||||
},
|
},
|
||||||
}
|
},
|
||||||
|
'zfs': {
|
||||||
|
'datasets': {
|
||||||
|
'tank': {
|
||||||
|
'recordsize': "1048576",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -25,7 +32,7 @@ defaults = {
|
||||||
)
|
)
|
||||||
def zfs(metadata):
|
def zfs(metadata):
|
||||||
datasets = {}
|
datasets = {}
|
||||||
|
|
||||||
for other_node in repo.nodes:
|
for other_node in repo.nodes:
|
||||||
if (
|
if (
|
||||||
other_node.has_bundle('backup') and
|
other_node.has_bundle('backup') and
|
||||||
|
@ -42,7 +49,7 @@ def zfs(metadata):
|
||||||
'com.sun:auto-snapshot': 'false',
|
'com.sun:auto-snapshot': 'false',
|
||||||
'backup': False,
|
'backup': False,
|
||||||
}
|
}
|
||||||
|
|
||||||
# for rsync backups
|
# for rsync backups
|
||||||
datasets[f'{base_dataset}/fs'] = {
|
datasets[f'{base_dataset}/fs'] = {
|
||||||
'mountpoint': f"/mnt/backups/{id}",
|
'mountpoint': f"/mnt/backups/{id}",
|
||||||
|
@ -51,10 +58,10 @@ def zfs(metadata):
|
||||||
'com.sun:auto-snapshot': 'true',
|
'com.sun:auto-snapshot': 'true',
|
||||||
'backup': False,
|
'backup': False,
|
||||||
}
|
}
|
||||||
|
|
||||||
# for zfs send/recv
|
# for zfs send/recv
|
||||||
if other_node.has_bundle('zfs'):
|
if other_node.has_bundle('zfs'):
|
||||||
|
|
||||||
# base datasets for each tank
|
# base datasets for each tank
|
||||||
for pool in other_node.metadata.get('zfs/pools'):
|
for pool in other_node.metadata.get('zfs/pools'):
|
||||||
datasets[f'{base_dataset}/{pool}'] = {
|
datasets[f'{base_dataset}/{pool}'] = {
|
||||||
|
@ -64,7 +71,7 @@ def zfs(metadata):
|
||||||
'com.sun:auto-snapshot': 'false',
|
'com.sun:auto-snapshot': 'false',
|
||||||
'backup': False,
|
'backup': False,
|
||||||
}
|
}
|
||||||
|
|
||||||
# actual datasets
|
# actual datasets
|
||||||
for path in other_node.metadata.get('backup/paths'):
|
for path in other_node.metadata.get('backup/paths'):
|
||||||
for dataset, config in other_node.metadata.get('zfs/datasets').items():
|
for dataset, config in other_node.metadata.get('zfs/datasets').items():
|
||||||
|
|
|
@ -39,7 +39,7 @@ else
|
||||||
echo "INCREMENTAL BACKUP"
|
echo "INCREMENTAL BACKUP"
|
||||||
last_bookmark=$(zfs list -t bookmark -H -o name | grep "^$source_dataset#$bookmark_prefix" | sort | tail -1 | cut -d '#' -f 2)
|
last_bookmark=$(zfs list -t bookmark -H -o name | grep "^$source_dataset#$bookmark_prefix" | sort | tail -1 | cut -d '#' -f 2)
|
||||||
[[ -z "$last_bookmark" ]] && echo "ERROR - last_bookmark is empty" && exit 98
|
[[ -z "$last_bookmark" ]] && echo "ERROR - last_bookmark is empty" && exit 98
|
||||||
$(zfs send -v -L -i "#$last_bookmark" "$source_dataset@$new_bookmark" | $ssh sudo zfs recv "$target_dataset")
|
$(zfs send -v -L -c -i "#$last_bookmark" "$source_dataset@$new_bookmark" | $ssh sudo zfs recv "$target_dataset")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$?" == "0" ]]
|
if [[ "$?" == "0" ]]
|
||||||
|
|
|
@ -27,7 +27,7 @@ do
|
||||||
echo "INCREMENTAL BACKUP"
|
echo "INCREMENTAL BACKUP"
|
||||||
last_bookmark=$(zfs list -t bookmark -H -o name | grep "^$dataset#$bookmark_prefix" | sort | tail -1 | cut -d '#' -f 2)
|
last_bookmark=$(zfs list -t bookmark -H -o name | grep "^$dataset#$bookmark_prefix" | sort | tail -1 | cut -d '#' -f 2)
|
||||||
[[ -z "$last_bookmark" ]] && echo "ERROR - last_bookmark is empty" && exit 98
|
[[ -z "$last_bookmark" ]] && echo "ERROR - last_bookmark is empty" && exit 98
|
||||||
$(zfs send -v -L -i "#$last_bookmark" "$dataset@$new_bookmark" | $ssh sudo zfs recv "$dataset" -o mountpoint=none)
|
$(zfs send -v -c -L -i "#$last_bookmark" "$dataset@$new_bookmark" | $ssh sudo zfs recv "$dataset" -o mountpoint=none)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$?" == "0" ]]
|
if [[ "$?" == "0" ]]
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
'metadata': {
|
'metadata': {
|
||||||
'backup': {
|
'backup': {
|
||||||
'server': 'home.backups',
|
'server': 'home.backups',
|
||||||
|
'paths': {
|
||||||
|
'/etc',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue