Skip to content

Commit 6933fc0

Browse files
committed
CHANGES:
- BackupService: can backup subdirectories only now.
1 parent 5fe83e8 commit 6933fc0

File tree

2 files changed

+18
-10
lines changed

2 files changed

+18
-10
lines changed

services/backup/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ backups:
2727
servers: # Backup your DCS servers
2828
directories: # List of directories to be backed up
2929
- Config
30-
- Missions
30+
- Missions/Scripts # only back up this subdirectory
3131
- Scripts
3232
schedule:
3333
times:

services/backup/service.py

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from core import ServiceRegistry, Service, utils
1111
from datetime import datetime
1212
from discord.ext import tasks
13-
from pathlib import Path
13+
from pathlib import Path, PureWindowsPath
1414
from urllib.parse import urlparse
1515
from zipfile import ZipFile
1616

@@ -167,17 +167,25 @@ def _backup_servers(self) -> bool:
167167
continue
168168
self.log.info(f'Backing up server "{server_name}" ...')
169169
filename = f"{server.instance.name}_" + datetime.now().strftime("%Y%m%d_%H%M%S") + ".zip"
170+
directories = config.get('directories', ['Config', 'Scripts'])
171+
root_dir = server.instance.home
170172
with ZipFile(os.path.join(target, filename), mode="w") as zf:
171173
try:
172-
root_dir = server.instance.home
173-
directories = config.get('directories', ['Config', 'Scripts'])
174-
missions = next((directory for directory in directories if directory.lower() == 'missions'), None)
175-
if missions:
176-
mission_dir = os.path.normpath(server.instance.missions_dir).rstrip(os.sep)
177-
self.zip_path(zf, os.path.dirname(mission_dir), os.path.basename(mission_dir))
178-
directories.remove(missions)
179174
for directory in directories:
180-
self.zip_path(zf, root_dir, directory)
175+
parts = PureWindowsPath(directory).parts
176+
if parts[0].lower() == 'missions':
177+
mission_dir = os.path.normpath(server.instance.missions_dir).rstrip(os.sep)
178+
to_backup = os.path.join(os.path.dirname(mission_dir), directory)
179+
if not os.path.exists(to_backup):
180+
self.log.warning(f"{self.name}: Directory {to_backup} not found, skipping.")
181+
continue
182+
self.zip_path(zf, os.path.dirname(mission_dir), directory)
183+
else:
184+
to_backup = os.path.join(root_dir, directory)
185+
if not os.path.exists(to_backup):
186+
self.log.warning(f"{self.name}: Directory {to_backup} not found, skipping.")
187+
continue
188+
self.zip_path(zf, root_dir, directory)
181189
self.log.info(f'Backup of server "{server_name}" complete.')
182190
except Exception:
183191
self.log.error(f'Backup of server "{server_name}" failed.', exc_info=True)

0 commit comments

Comments
 (0)