synchroniser : move backup options to init
Moves the backup options from sync_files to init. The options are needed in links (to ignore the backup folders) so it is way easier to have them as attributes. To do this we move everything related to backup into __init__. Also remove the option from the runner.
This commit is contained in:
@@ -11,7 +11,7 @@ def unisync_sync(synchroniser:Synchroniser, paths_manager:PathsManager, config:
|
|||||||
return 1
|
return 1
|
||||||
print("Connected to the remote.")
|
print("Connected to the remote.")
|
||||||
|
|
||||||
synchroniser.sync_files(paths_manager.get_paths_to_sync(), backup=config.backup)
|
synchroniser.sync_files(paths_manager.get_paths_to_sync())
|
||||||
synchroniser.sync_links(paths_manager.get_paths_to_sync())
|
synchroniser.sync_links(paths_manager.get_paths_to_sync())
|
||||||
|
|
||||||
# TODO check the config options and do or don't do the following
|
# TODO check the config options and do or don't do the following
|
||||||
|
|||||||
@@ -49,8 +49,10 @@ class Synchroniser:
|
|||||||
Currently unused.
|
Currently unused.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, remote:str, local:str, user:str, ip:str,
|
def __init__(self, remote:str, local:str, user:str, ip:str, port:int=22,
|
||||||
port:int=22, args_bool:list=[], args_value:dict={}, ssh_settings:dict={}):
|
args_bool:list=[], args_value:dict={}, ssh_settings:dict={},
|
||||||
|
backup:BackupConfig | None = None
|
||||||
|
):
|
||||||
"""Initialises an instance of Synchroniser.
|
"""Initialises an instance of Synchroniser.
|
||||||
"""
|
"""
|
||||||
self.remote_dir:str = remote
|
self.remote_dir:str = remote
|
||||||
@@ -61,6 +63,34 @@ class Synchroniser:
|
|||||||
self.remote_user:str = user
|
self.remote_user:str = user
|
||||||
self.remote_ip:str = ip
|
self.remote_ip:str = ip
|
||||||
self.remote_port:int = port
|
self.remote_port:int = port
|
||||||
|
self.files_extra:list = list()
|
||||||
|
self.links_extra:list = list()
|
||||||
|
|
||||||
|
if(backup != None and backup.enabled):
|
||||||
|
backup = cast(BackupConfig, backup)
|
||||||
|
self.files_extra.append("-backup")
|
||||||
|
if(backup.selection != ""):
|
||||||
|
self.files_extra.append(backup.selection)
|
||||||
|
else:
|
||||||
|
self.files_extra.append("Name *")
|
||||||
|
|
||||||
|
self.files_extra.extend([
|
||||||
|
"-backuploc",
|
||||||
|
backup.location,
|
||||||
|
"-maxbackups",
|
||||||
|
str(backup.max_backups),
|
||||||
|
"-backupsuffix",
|
||||||
|
backup.backupsuffix,
|
||||||
|
"-backupprefix",
|
||||||
|
backup.backupprefix,
|
||||||
|
"-ignore",
|
||||||
|
f"Name {backup.backupprefix[:-1]}"
|
||||||
|
])
|
||||||
|
|
||||||
|
self.links_extra.extend([
|
||||||
|
"-ignore",
|
||||||
|
f"Name {backup.backupprefix[:-1]}"
|
||||||
|
])
|
||||||
|
|
||||||
def create_ssh_master_connection(self, control_path:str="~/.ssh/control_%C", connection_timeout:int=60) -> int:
|
def create_ssh_master_connection(self, control_path:str="~/.ssh/control_%C", connection_timeout:int=60) -> int:
|
||||||
"""Creates an ssh master connection.
|
"""Creates an ssh master connection.
|
||||||
@@ -119,9 +149,7 @@ class Synchroniser:
|
|||||||
close = subprocess.Popen(command)
|
close = subprocess.Popen(command)
|
||||||
return close.wait()
|
return close.wait()
|
||||||
|
|
||||||
def sync_files(self, paths:list, force:bool=False,
|
def sync_files(self, paths:list, force:bool=False) -> int:
|
||||||
backup:BackupConfig | None = None
|
|
||||||
) -> int:
|
|
||||||
"""Synchronises the files.
|
"""Synchronises the files.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@@ -131,35 +159,13 @@ class Synchroniser:
|
|||||||
Returns:
|
Returns:
|
||||||
The return code of sync.
|
The return code of sync.
|
||||||
"""
|
"""
|
||||||
other = list()
|
|
||||||
if(backup != None and backup.enabled):
|
|
||||||
backup = cast(BackupConfig, backup)
|
|
||||||
|
|
||||||
other.append("-backup")
|
|
||||||
if(backup.selection != ""):
|
|
||||||
other.append(backup.selection)
|
|
||||||
else:
|
|
||||||
other.append("Name *")
|
|
||||||
|
|
||||||
other.extend([
|
|
||||||
"-backuploc",
|
|
||||||
backup.location,
|
|
||||||
"-maxbackups",
|
|
||||||
str(backup.max_backups),
|
|
||||||
"-backupsuffix",
|
|
||||||
backup.backupsuffix,
|
|
||||||
"-backupprefix",
|
|
||||||
backup.backupprefix,
|
|
||||||
"-ignore",
|
|
||||||
backup.backupprefix
|
|
||||||
])
|
|
||||||
|
|
||||||
return self.sync(
|
return self.sync(
|
||||||
f"ssh://{self.remote_user}@{self.remote_ip}/{self.remote_dir}/.data",
|
f"ssh://{self.remote_user}@{self.remote_ip}/{self.remote_dir}/.data",
|
||||||
self.local,
|
self.local,
|
||||||
paths=paths,
|
paths=paths,
|
||||||
force=force,
|
force=force,
|
||||||
other=other
|
other=self.files_extra
|
||||||
)
|
)
|
||||||
|
|
||||||
def sync_links(self, ignore:list) -> int:
|
def sync_links(self, ignore:list) -> int:
|
||||||
@@ -174,7 +180,8 @@ class Synchroniser:
|
|||||||
return self.sync(
|
return self.sync(
|
||||||
f"ssh://{self.remote_user}@{self.remote_ip}/{self.remote_dir}/links",
|
f"ssh://{self.remote_user}@{self.remote_ip}/{self.remote_dir}/links",
|
||||||
self.local,
|
self.local,
|
||||||
ignore=ignore
|
ignore=ignore,
|
||||||
|
other=self.links_extra
|
||||||
)
|
)
|
||||||
|
|
||||||
def sync(self, remote_root:str, local_root:str,
|
def sync(self, remote_root:str, local_root:str,
|
||||||
|
|||||||
Reference in New Issue
Block a user