Allow excluding all bind mounts from backups
This commit is contained in:
parent
f7958d7db9
commit
0fc620bb1f
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
SWARM_MODE=true
|
SWARM_MODE=true
|
||||||
INCLUDE_PROJECT_NAME=false
|
INCLUDE_PROJECT_NAME=false
|
||||||
|
EXCLUDE_BIND_MOUNTS=false
|
||||||
|
|
||||||
RESTIC_REPOSITORY=/restic_data
|
RESTIC_REPOSITORY=/restic_data
|
||||||
RESTIC_PASSWORD=password
|
RESTIC_PASSWORD=password
|
||||||
|
|
|
@ -67,6 +67,7 @@ def status(config, containers):
|
||||||
logger.info("Repository: '%s'", config.repository)
|
logger.info("Repository: '%s'", config.repository)
|
||||||
logger.info("Backup currently running?: %s", containers.backup_process_running)
|
logger.info("Backup currently running?: %s", containers.backup_process_running)
|
||||||
logger.info("Include project name in backup path?: %s", utils.is_true(config.include_project_name))
|
logger.info("Include project name in backup path?: %s", utils.is_true(config.include_project_name))
|
||||||
|
logger.debug("Exclude bind mounts from backups?: %s", utils.is_true(config.exclude_bind_mounts))
|
||||||
logger.info("Checking docker availability")
|
logger.info("Checking docker availability")
|
||||||
|
|
||||||
utils.list_containers()
|
utils.list_containers()
|
||||||
|
|
|
@ -14,6 +14,7 @@ class Config:
|
||||||
self.cron_command = os.environ.get('CRON_COMMAND') or self.default_backup_command
|
self.cron_command = os.environ.get('CRON_COMMAND') or self.default_backup_command
|
||||||
self.swarm_mode = os.environ.get('SWARM_MODE') or False
|
self.swarm_mode = os.environ.get('SWARM_MODE') or False
|
||||||
self.include_project_name = os.environ.get('INCLUDE_PROJECT_NAME') or False
|
self.include_project_name = os.environ.get('INCLUDE_PROJECT_NAME') or False
|
||||||
|
self.exclude_bind_mounts = os.environ.get('EXCLUDE_BIND_MOUNTS') or False
|
||||||
|
|
||||||
# Log
|
# Log
|
||||||
self.log_level = os.environ.get('LOG_LEVEL')
|
self.log_level = os.environ.get('LOG_LEVEL')
|
||||||
|
|
|
@ -193,11 +193,15 @@ class Container:
|
||||||
"""Get all mounts for this container matching include/exclude filters"""
|
"""Get all mounts for this container matching include/exclude filters"""
|
||||||
filtered = []
|
filtered = []
|
||||||
|
|
||||||
|
# If exclude_bind_mounts is true, only volume mounts are kept in the list of mounts
|
||||||
|
exclude_bind_mounts = utils.is_true(config.exclude_bind_mounts)
|
||||||
|
mounts = list(filter(lambda m: not exclude_bind_mounts or m.type == "volume", self._mounts))
|
||||||
|
|
||||||
if not self.volume_backup_enabled:
|
if not self.volume_backup_enabled:
|
||||||
return filtered
|
return filtered
|
||||||
|
|
||||||
if self._include:
|
if self._include:
|
||||||
for mount in self._mounts:
|
for mount in mounts:
|
||||||
for pattern in self._include:
|
for pattern in self._include:
|
||||||
if pattern in mount.source:
|
if pattern in mount.source:
|
||||||
break
|
break
|
||||||
|
@ -207,14 +211,14 @@ class Container:
|
||||||
filtered.append(mount)
|
filtered.append(mount)
|
||||||
|
|
||||||
elif self._exclude:
|
elif self._exclude:
|
||||||
for mount in self._mounts:
|
for mount in mounts:
|
||||||
for pattern in self._exclude:
|
for pattern in self._exclude:
|
||||||
if pattern in mount.source:
|
if pattern in mount.source:
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
filtered.append(mount)
|
filtered.append(mount)
|
||||||
else:
|
else:
|
||||||
return self._mounts
|
return mounts
|
||||||
|
|
||||||
return filtered
|
return filtered
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue