Add rsync at end of run

This commit is contained in:
Bill Thiede 2025-12-03 08:21:48 -08:00
parent 61b10131b4
commit 69e6ccfb6f

View File

@ -78,6 +78,10 @@ class Config:
@property
def compare_days(self) -> Optional[List[int]]:
return self.config.get('compare_days')
@property
def rsync_config(self) -> Optional[dict]:
return self.config.get('rsync')
class Database:
@ -1160,6 +1164,49 @@ class AOCSync:
# Generate HTML report
logger.info("Generating HTML report...")
self.html_gen.generate(self.db, self.config)
# Rsync output if configured
self._rsync_output()
def _rsync_output(self):
"""Rsync output directory to remote server if configured"""
rsync_config = self.config.rsync_config
if not rsync_config or not rsync_config.get('enabled', False):
return
destination = rsync_config.get('destination')
if not destination:
logger.warning("Rsync enabled but no destination specified")
return
output_dir = Path(self.config.output_dir)
if not output_dir.exists():
logger.warning(f"Output directory {output_dir} does not exist, skipping rsync")
return
logger.info(f"Rsyncing {output_dir} to {destination}...")
try:
# Build rsync command
# Use trailing slash on source to sync contents, not the directory itself
source = str(output_dir) + "/"
cmd = ['rsync', '-avz', '--delete', source, destination]
result = subprocess.run(
cmd,
capture_output=True,
text=True,
timeout=60 # 1 minute timeout
)
if result.returncode == 0:
logger.info(f"Successfully rsynced output to {destination}")
else:
logger.error(f"Rsync failed: {result.stderr}")
except subprocess.TimeoutExpired:
logger.error("Rsync timed out")
except Exception as e:
logger.error(f"Error during rsync: {e}")
def run_continuous(self):
"""Run continuous polling"""