restic-compose-backup/restic_volume_backup/backup.py

62 lines
1.4 KiB
Python
Raw Normal View History

2019-04-13 17:04:54 +00:00
import os
import sys
from containers import RunningContainers
import restic
2019-04-15 14:16:06 +00:00
cmds = ['status', 'backup', 'snapshots', 'check']
2019-04-13 17:04:54 +00:00
class Config:
2019-04-13 18:12:25 +00:00
repository = os.environ['RESTIC_REPOSITORY']
2019-04-13 17:04:54 +00:00
password = os.environ['RESTIC_PASSWORD']
@classmethod
def check(cls):
2019-04-13 18:12:25 +00:00
if not cls.repository:
2019-04-13 17:04:54 +00:00
raise ValueError("CONTAINER env var not set")
if not cls.password:
raise ValueError("PASSWORD env var not set")
def main():
if len(sys.argv) < 2:
raise ValueError("Missing argument: {}".format(cmds))
mode = sys.argv[1]
if mode not in cmds:
raise ValueError("Valid arguments: {}".format(cmds))
Config.check()
containers = RunningContainers()
2019-04-15 14:16:06 +00:00
if mode == 'status':
containers.print_services()
# volumes = containers.volume_mounts()
# for vol in volumes:
# print(vol)
# print(vol.mount_string())
2019-04-13 17:04:54 +00:00
2019-04-15 14:16:06 +00:00
# binds = containers.bind_mounts()
# for vol in binds:
# print(binds)
# print(vol.mount_string())
2019-04-13 17:04:54 +00:00
if mode == 'backup':
2019-04-15 14:16:06 +00:00
print("Starting backup ..")
2019-04-13 23:35:14 +00:00
# TODO: Errors when repo already exists
2019-04-15 14:16:06 +00:00
# restic.init_repo(Config.repository)
2019-04-13 17:04:54 +00:00
2019-04-13 23:35:14 +00:00
# for vol in containers.backup_volumes():
# restic.backup_volume(Config.repository, vol)
2019-04-13 17:04:54 +00:00
if mode == 'snapshots':
2019-04-13 18:12:25 +00:00
restic.snapshots(Config.repository)
2019-04-13 17:04:54 +00:00
2019-04-13 23:35:14 +00:00
2019-04-13 17:04:54 +00:00
if __name__ == '__main__':
main()