restic-compose-backup/restic_volume_backup/restic.py

59 lines
1 KiB
Python
Raw Normal View History

2019-11-15 14:23:56 +01:00
import logging
2019-11-12 12:39:49 +01:00
from subprocess import Popen, PIPE
2019-04-13 19:04:54 +02:00
2019-11-15 14:23:56 +01:00
logger = logging.getLogger(__name__)
2019-04-13 19:04:54 +02:00
2019-04-13 20:12:25 +02:00
def init_repo(repository):
2019-11-15 14:23:56 +01:00
"""
Attempt to initialize the repository.
Doing this after the repository is initialized
"""
2019-04-13 19:04:54 +02:00
run_command([
"restic",
"-r",
2019-04-13 20:12:25 +02:00
repository,
2019-04-13 19:04:54 +02:00
"init",
])
2019-04-13 20:12:25 +02:00
def backup_volume(repository, volume):
2019-04-13 19:04:54 +02:00
run_command([
"restic",
"-r",
2019-04-13 20:12:25 +02:00
repository,
2019-04-13 19:04:54 +02:00
"--verbose",
"backup",
volume.destination,
])
2019-04-13 20:12:25 +02:00
def snapshots(repository):
2019-04-13 19:04:54 +02:00
run_command([
"restic",
"-r",
2019-04-13 20:12:25 +02:00
repository,
2019-04-13 19:04:54 +02:00
"snapshots",
])
2019-04-13 20:12:25 +02:00
def check(repository):
2019-04-13 19:04:54 +02:00
run_command([
"restic",
"-r",
2019-04-13 20:12:25 +02:00
repository,
2019-04-13 19:04:54 +02:00
"check",
])
def run_command(cmd):
2019-11-15 14:23:56 +01:00
logger.info('cmd: %s', ' '.join(cmd))
2019-04-13 19:04:54 +02:00
child = Popen(cmd, stdout=PIPE, stderr=PIPE)
stdoutdata, stderrdata = child.communicate()
if stdoutdata:
print(stdoutdata.decode())
if stderrdata:
print(stderrdata.decode())