Compare commits
No commits in common. "3b1ef1eb411f4aebd366935cd132faccc5469123" and "8ce3217b16d6ee0b3be879301a701758cb3578a9" have entirely different histories.
3b1ef1eb41
...
8ce3217b16
4 changed files with 8 additions and 18 deletions
|
@ -16,14 +16,7 @@ defaults = {
|
||||||
'/usr/bin/rsync',
|
'/usr/bin/rsync',
|
||||||
'/sbin/zfs',
|
'/sbin/zfs',
|
||||||
},
|
},
|
||||||
},
|
}
|
||||||
'zfs': {
|
|
||||||
'datasets': {
|
|
||||||
'tank': {
|
|
||||||
'recordsize': "1048576",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -32,7 +25,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
|
||||||
|
@ -49,7 +42,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}",
|
||||||
|
@ -58,10 +51,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}'] = {
|
||||||
|
@ -71,7 +64,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 -c -i "#$last_bookmark" "$source_dataset@$new_bookmark" | $ssh sudo zfs recv "$target_dataset")
|
$(zfs send -v -L -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 -c -L -i "#$last_bookmark" "$dataset@$new_bookmark" | $ssh sudo zfs recv "$dataset" -o mountpoint=none)
|
$(zfs send -v -L -i "#$last_bookmark" "$dataset@$new_bookmark" | $ssh sudo zfs recv "$dataset" -o mountpoint=none)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$?" == "0" ]]
|
if [[ "$?" == "0" ]]
|
||||||
|
|
|
@ -5,9 +5,6 @@
|
||||||
'metadata': {
|
'metadata': {
|
||||||
'backup': {
|
'backup': {
|
||||||
'server': 'home.backups',
|
'server': 'home.backups',
|
||||||
'paths': {
|
|
||||||
'/etc',
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue