|
10 | 10 | from core import ServiceRegistry, Service, utils |
11 | 11 | from datetime import datetime |
12 | 12 | from discord.ext import tasks |
13 | | -from pathlib import Path |
| 13 | +from pathlib import Path, PureWindowsPath |
14 | 14 | from urllib.parse import urlparse |
15 | 15 | from zipfile import ZipFile |
16 | 16 |
|
@@ -167,17 +167,25 @@ def _backup_servers(self) -> bool: |
167 | 167 | continue |
168 | 168 | self.log.info(f'Backing up server "{server_name}" ...') |
169 | 169 | 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 |
170 | 172 | with ZipFile(os.path.join(target, filename), mode="w") as zf: |
171 | 173 | 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) |
179 | 174 | 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) |
181 | 189 | self.log.info(f'Backup of server "{server_name}" complete.') |
182 | 190 | except Exception: |
183 | 191 | self.log.error(f'Backup of server "{server_name}" failed.', exc_info=True) |
|
0 commit comments