Пример #1
0
class DestRsync(Dest):

    params_required = ['type', 'path']
    params_allowed = ['verbosity', 'exclude']

    # --------------------------------------------------------------------
    def __init__(self, job, cfg, name, bg):
        l.debug("Adding rsync destination '%s' (background: %s) to job '%s'" % (name, str(bg), job.real_name))

        Dest.__init__(self, job, cfg, name, bg)

        self.exclude = cfg.get_def(self.sname, "exclude", "")
        self.verbosity = int(cfg.get_def(self.sname, "verbosity", "1"))

        self.path = self.__prepare_path()

        self.retries = int(cfg.get_def("global", "copy_retries", '3'))
        self.retry_sleep = int(cfg.get_def("global", "copy_retries", '60'))

    # --------------------------------------------------------------------
    def __prepare_path(self):
        path = self.cfg.get(self.sname, "path")

        if not path.endswith("/"):
            path += "/"

        path += self.job.get_job_path()

        return path

    # --------------------------------------------------------------------
    def copy(self):
        excludes = self.job.exclude + " " + self.exclude
        l.debug("Copying '%s' to '%s' on destination '%s' excluding: '%s'" % (self.job.include, self.path, self.name, excludes))
        self.rsync = Rsync(self.name, self.job.include, self.path, excludes)
        self.rsync.set_verbosity(self.verbosity)
        self.retries -= 1
        self.rsync.run()