Automatically create (incremental) backups of zfs snapshots on a file server.
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
#!/usr/local/bin/python
|
|
|
|
|
|
|
|
import pathlib
|
|
|
|
import subprocess
|
|
|
|
|
|
|
|
from copy_snapshots_to_remote import get_member_name
|
|
|
|
from create_snapshot_backup import call, remote_call
|
|
|
|
|
|
|
|
SSH_KEY_FILE = "/mnt/Datenspeicher/snap-backup-dataset/backup_key"
|
|
|
|
SSH_REMOTE = "zfs_snap_backup@etha.cpi.imtek.uni-freiburg.de"
|
|
|
|
|
|
|
|
REMOTE_PATH = "zfs-backups"
|
|
|
|
|
|
|
|
ZFS_POOL = "Datenspeicher"
|
|
|
|
ZFS_ELAB_PREFIX = "elabfs-"
|
|
|
|
|
|
|
|
TMP_BACKUP_FOLDER = "/mnt/Datenspeicher/snap-backup-dataset/temporary-backups"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_local_backup_members():
|
|
|
|
tmp_folder = pathlib.Path(TMP_BACKUP_FOLDER)
|
|
|
|
backups = (i for i in tmp_folder.iterdir() if i.suffix==".gz")
|
|
|
|
return (get_member_name(b.name) for b in backups)
|
|
|
|
|
|
|
|
|
|
|
|
def get_remote_checksums():
|
|
|
|
result = {}
|
|
|
|
for member in get_local_backup_members():
|
|
|
|
remote_path = f"~/{REMOTE_PATH}/{member}/\*"
|
|
|
|
cmd_result = remote_call(["sha256sum", remote_path])
|
|
|
|
print(cmd_result)
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
get_remote_checksums()
|