mirror of
https://github.com/kevinveenbirkenbach/docker-volume-backup.git
synced 2024-11-25 09:41:03 +01:00
Compare commits
2 Commits
bf9986f282
...
7702b17a9d
Author | SHA1 | Date | |
---|---|---|---|
7702b17a9d | |||
489b5796b7 |
@ -142,7 +142,7 @@ def get_last_backup_dir(volume_name, current_backup_dir):
|
||||
return None
|
||||
|
||||
def getStoragePath(volume_name):
|
||||
return execute_shell_command(f"docker volume inspect {volume_name} | jq -r '.[0].Mountpoint'")
|
||||
return execute_shell_command(f"docker volume inspect --format '{{{{ .Mountpoint }}}}' {volume_name}")
|
||||
|
||||
def backup_volume(volume_name, volume_dir):
|
||||
"""Backup files of a volume with incremental backups."""
|
||||
@ -159,7 +159,7 @@ def backup_volume(volume_name, volume_dir):
|
||||
print(f"Backup routine for volume: {volume_name} completed.")
|
||||
|
||||
def get_image_info(container):
|
||||
return execute_shell_command(f"docker inspect {container} | jq -r '.[].Config.Image'")
|
||||
return execute_shell_command(f"docker inspect --format '{{{{.Config.Image}}}}' {container}")
|
||||
|
||||
def has_image(container,image):
|
||||
"""Check if the container is using the image"""
|
||||
@ -211,9 +211,12 @@ def is_image_ignored(container):
|
||||
return True
|
||||
return False
|
||||
|
||||
def backup_with_containers_paused(volume_name, volume_dir, containers):
|
||||
def backup_with_containers_paused(volume_name, volume_dir, containers, shutdown):
|
||||
stop_containers(containers)
|
||||
backup_volume(volume_name, volume_dir)
|
||||
|
||||
# Just restart containers if shutdown is false
|
||||
if not shutdown:
|
||||
start_containers(containers)
|
||||
|
||||
def backup_mariadb_or_postgres(container, volume_dir):
|
||||
@ -224,8 +227,7 @@ def backup_mariadb_or_postgres(container, volume_dir):
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def default_backup_routine_for_volume(volume_name, containers):
|
||||
def default_backup_routine_for_volume(volume_name, containers, shutdown):
|
||||
"""Perform backup routine for a given volume."""
|
||||
volume_dir=""
|
||||
for container in containers:
|
||||
@ -246,9 +248,9 @@ def default_backup_routine_for_volume(volume_name, containers):
|
||||
if volume_dir:
|
||||
backup_volume(volume_name, volume_dir)
|
||||
if is_container_stop_required(containers):
|
||||
backup_with_containers_paused(volume_name, volume_dir, containers)
|
||||
backup_with_containers_paused(volume_name, volume_dir, containers, shutdown)
|
||||
|
||||
def backup_everything(volume_name, containers):
|
||||
def backup_everything(volume_name, containers, shutdown):
|
||||
"""Perform file backup routine for a given volume."""
|
||||
volume_dir=create_volume_directory(volume_name)
|
||||
|
||||
@ -258,12 +260,14 @@ def backup_everything(volume_name, containers):
|
||||
|
||||
# Execute file backups
|
||||
backup_volume(volume_name, volume_dir)
|
||||
backup_with_containers_paused(volume_name, volume_dir, containers)
|
||||
backup_with_containers_paused(volume_name, volume_dir, containers, shutdown)
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description='Backup Docker volumes.')
|
||||
parser.add_argument('--everything', action='store_true',
|
||||
help='Force file backup for all volumes and additional execute database dumps')
|
||||
parser.add_argument('--shutdown', action='store_true',
|
||||
help='Doesn\'t restart containers after backup')
|
||||
args = parser.parse_args()
|
||||
|
||||
print('Start volume backups...')
|
||||
@ -276,9 +280,9 @@ def main():
|
||||
print('Skipped due to no running containers using this volume.')
|
||||
continue
|
||||
if args.everything:
|
||||
backup_everything(volume_name, containers)
|
||||
backup_everything(volume_name, containers, args.shutdown)
|
||||
else:
|
||||
default_backup_routine_for_volume(volume_name, containers)
|
||||
default_backup_routine_for_volume(volume_name, containers, args.shutdown)
|
||||
|
||||
print('Finished volume backups.')
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user