def run(self): # Assure that only one instance of ArGyver is running. lock = PidLock(server_root=self.config.get_server_root()) if lock.locked(): warning("ArGyver already running with pid %d!" % lock.pid()) else: # Create a lock file in the /tmp folder lock.lock() # For each source folder: synchronize, archive, free disk space for [dst, src] in self.sources.iteritems(): self.rsync(src, dst) self.update_db_snapshot(dst) self.archive() self.link_files() self.update_db_versions() self.update_db_repository() # TODO: self.update_db_history() self.remove_tmp_folder() self.finish() # Remove the lock file lock.unlock()