30 lines
1.1 KiB
Python
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)
|