Skip to content
Snippets Groups Projects
0_setup.py 1.48 KiB
Newer Older
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright 2017, Florent Thiery
import utils
import socket
import os


def setup(interactive=True):
    CROND_TEMPLATE = '''# https://github.com/laurent22/rsync-time-backup
0 22 * * * root /usr/local/sbin/rsync_tmbackup.sh /etc root@{backup_server}:/backup/{hostname}/etc /etc/backup/excluded_patterns.txt
0 22 * * * root flock -n /etc/backup/home_backup.lock /usr/local/sbin/rsync_tmbackup.sh /home root@{backup_server}:/backup/{hostname}/home /etc/backup/excluded_patterns.txt'''
    if os.path.exists('/data'):
        CROND_TEMPLATE += '\n0 22 * * * root flock -n /etc/backup/data_backup.lock /usr/local/sbin/rsync_tmbackup.sh /data root@{backup_server}:/backup/{hostname}/data /etc/backup/excluded_patterns.txt'
    # crontab files can only contain lowercase and dashes, no _ or .
    cmds = [
        'cp rsync_tmbackup.sh /usr/local/sbin',
        'mkdir -p /etc/backup',
        'cp excluded_patterns.txt /etc/backup',
        'cp /tmp/backup.cron /etc/cron.d/backup',
    ]

    server = utils.get_conf('BACKUP_SERVER', '')
    if server:
        if os.path.exists('/etc/cron.d/backup.cron'):
            print('/etc/cron.d/backup.cron already here, skipping install')
        else:
            with open('/tmp/backup.cron', 'w') as f:
                CROND = CROND_TEMPLATE.format(backup_server=server, hostname=socket.gethostname())
                f.write(CROND)
            utils.run_commands(cmds)
        print('Missing BACKUP_SERVER in conf')