docker_images/backups/rsyncvolumes/remote.py

30 lines
1.1 KiB
Python

from os import environ
from subprocess import Popen
from shlex import split as shplit
# Remote syncing, when needed
def sync():
""" Remote syncing """
DEST = environ.get('DEST')
REMOTE_HOST = environ.get('REMOTE_HOST', False)
if REMOTE_HOST:
REMOTE_USER = environ.get('REMOTE_USER')
REMOTE_PASS = environ.get('REMOTE_PASS')
print('Remote host %s configured : will sync with it' % REMOTE_HOST)
paths = [DEST]
SYNC_EXTRA_PATHES = environ.get('SYNC_EXTRA_PATHES', False)
if SYNC_EXTRA_PATHES:
paths += SYNC_EXTRA_PATHES.split(',')
def run(path):
print('Syncing %s...' % path)
_paths = path.split(':')
lpath = _paths[0]
rpath = _paths[1] if len(_paths) > 1 else 'backups'
command = ('sshpass -p %s rsync -av --delete -e '
'"ssh -p 23 -o StrictHostKeyChecking=no" '
'%s %s@%s:./%s') % (REMOTE_PASS, lpath, REMOTE_USER, REMOTE_HOST, rpath)
p = Popen(shplit(command))
p.communicate()
map(run, paths)