code: BackupChain startBackup(BackupConfig config, BackupJobListener jobListener) throws BackupOperationException,
        BackupConfigurationException, RepositoryException, RepositoryConfigurationException
     {
        validateBackupConfig(config);
  
        Calendar startTime = Calendar.getInstance();
        File dir =
           FileNameProducer.generateBackupSetDir(config.getRepository(), config.getWorkspace(), config.getBackupDir()
              .getPath(), startTime);
        PrivilegedFileHelper.mkdirs(dir);
        config.setBackupDir(dir);
  
        BackupChain bchain =
           new BackupChainImpl(config, logsDirectory, repoService, fullBackupType, incrementalBackupType, IdGenerator
              .generate(), logsDirectory, startTime);
  
        bchain.addListener(messagesListener);
        bchain.addListener(jobListener);
  
        currentBackups.add(bchain);
        bchain.startBackup();
  
        return bchain;
     }
docs: Internally used for call with job listener from scheduler.
  
  @param config
  @param jobListener
  @return
  @throws BackupOperationException
  @throws BackupConfigurationException
  @throws RepositoryException
  @throws RepositoryConfigurationException