public static void main()

in iotdb-client/cli/src/main/java/org/apache/iotdb/tool/backup/IoTDBDataBackTool.java [175:350]


  public static void main(String[] args) throws IOException {
    System.setProperty("IOTDB_HOME", System.getenv("IOTDB_HOME"));
    argsParse(args);
    File sourceDir = new File(sourcePath);

    Properties properties = getProperties(CommonConfig.SYSTEM_CONFIG_NAME);
    initDataNodeProperties(properties);
    initConfigNodeProperties(properties);

    StringBuilder targetDirString = new StringBuilder();
    Map<String, String> copyMap = new HashMap<>();
    Map<String, String> dnDataDirsMap = new HashMap<>();
    Map<String, String> cnMapProperties = new HashMap<>();
    Map<String, String> dnMapProperties = new HashMap<>();
    processFileCount.set(readFileData(filename));
    if (type != null && type.equals("quick")) {
      targetDirString
          .append(sourceDir.getParent())
          .append(File.separatorChar)
          .append("iotdb_backup");
      File targetDir = new File(targetDirString.toString());
      if (targetDir.exists()) {
        LOGGER.error("The backup folder already exists:{}", targetDirString);
        System.exit(0);
      }

      if (nodeTypeParam.equalsIgnoreCase("confignode")) {
        if (!targetDir.exists()) {
          targetDir.mkdirs();
        }
        countConfigNodeFile(targetDirString.toString(), copyMap, cnMapProperties);
        countNodeBack(targetDirString.toString(), copyMap);
        for (Map.Entry<String, String> entry : copyMap.entrySet()) {
          countFiles(entry.getKey());
        }

        ioTDBDataBack(copyMap, dnDataDirsMap);
        propertiesFileUpdate(
            targetDirString.toString()
                + File.separatorChar
                + "conf"
                + File.separatorChar
                + CommonConfig.SYSTEM_CONFIG_NAME,
            cnMapProperties);
      } else if (nodeTypeParam.equalsIgnoreCase("datanode")) {
        countDataNodeFile(targetDirString.toString(), copyMap, dnDataDirsMap, dnMapProperties);
        countNodeBack(targetDirString.toString(), copyMap);
        checkQuickMode(dnDataDirsMap);
        if (!targetDir.exists()) {
          targetDir.mkdirs();
        }
        for (Map.Entry<String, String> entry : copyMap.entrySet()) {
          countFiles(entry.getKey());
        }
        for (Map.Entry<String, String> entry : dnDataDirsMap.entrySet()) {
          countFiles(entry.getKey());
        }

        ioTDBDataBack(copyMap, dnDataDirsMap);
        propertiesFileUpdate(
            targetDirString.toString()
                + File.separatorChar
                + "conf"
                + File.separatorChar
                + CommonConfig.SYSTEM_CONFIG_NAME,
            dnMapProperties);
      } else if (nodeTypeParam.equalsIgnoreCase("all") || nodeTypeParam.isEmpty()) {
        countConfigNodeFile(targetDirString.toString(), copyMap, cnMapProperties);
        countDataNodeFile(targetDirString.toString(), copyMap, dnDataDirsMap, dnMapProperties);
        countNodeBack(targetDirString.toString(), copyMap);
        checkQuickMode(dnDataDirsMap);
        if (!targetDir.exists()) {
          targetDir.mkdirs();
        }
        for (Map.Entry<String, String> entry : copyMap.entrySet()) {
          countFiles(entry.getKey());
        }
        for (Map.Entry<String, String> entry : dnDataDirsMap.entrySet()) {
          countFiles(entry.getKey());
        }

        ioTDBDataBack(copyMap, dnDataDirsMap);
        propertiesFileUpdate(
            targetDirString.toString()
                + File.separatorChar
                + "conf"
                + File.separatorChar
                + CommonConfig.SYSTEM_CONFIG_NAME,
            cnMapProperties);
        propertiesFileUpdate(
            targetDirString.toString()
                + File.separatorChar
                + "conf"
                + File.separatorChar
                + CommonConfig.SYSTEM_CONFIG_NAME,
            dnMapProperties);
      }

    } else {
      if (targetDirParam != null && targetDirParam.length() > 0) {
        targetDirString.append(targetDirParam);
        File targetDir = new File(targetDirString.toString());
        if (!targetDir.exists()) {
          targetDir.mkdirs();
        }
      }

      if (nodeTypeParam.equalsIgnoreCase("confignode")) {
        countConfigNodeFile(targetDirString.toString(), copyMap, cnMapProperties);
        countNodeBack(targetDirString.toString(), copyMap);
        for (Map.Entry<String, String> entry : copyMap.entrySet()) {
          countFiles(entry.getKey());
        }
        isDirectoryInsideOrSame(copyMap);
        ioTDBDataBack(copyMap, dnDataDirsMap);
        propertiesFileUpdate(
            targetDirString.toString()
                + File.separatorChar
                + "conf"
                + File.separatorChar
                + CommonConfig.SYSTEM_CONFIG_NAME,
            cnMapProperties);
      } else if (nodeTypeParam.equalsIgnoreCase("datanode")) {
        countNodeBack(targetDirString.toString(), copyMap);
        countDataNodeFile(targetDirString.toString(), copyMap, dnDataDirsMap, dnMapProperties);

        for (Map.Entry<String, String> entry : copyMap.entrySet()) {
          countFiles(entry.getKey());
        }
        for (Map.Entry<String, String> entry : dnDataDirsMap.entrySet()) {
          countFiles(entry.getKey());
        }
        isDirectoryInsideOrSame(copyMap);
        isDirectoryInsideOrSame(dnDataDirsMap);
        ioTDBDataBack(copyMap, dnDataDirsMap);
        propertiesFileUpdate(
            targetDirString.toString()
                + File.separatorChar
                + "conf"
                + File.separatorChar
                + CommonConfig.SYSTEM_CONFIG_NAME,
            dnMapProperties);
      } else if (nodeTypeParam.equalsIgnoreCase("all") || nodeTypeParam.isEmpty()) {
        countNodeBack(targetDirString.toString(), copyMap);
        countConfigNodeFile(targetDirString.toString(), copyMap, cnMapProperties);
        countDataNodeFile(targetDirString.toString(), copyMap, dnDataDirsMap, dnMapProperties);
        for (Map.Entry<String, String> entry : copyMap.entrySet()) {
          countFiles(entry.getKey());
        }
        for (Map.Entry<String, String> entry : dnDataDirsMap.entrySet()) {
          countFiles(entry.getKey());
        }

        isDirectoryInsideOrSame(copyMap);
        isDirectoryInsideOrSame(dnDataDirsMap);

        ioTDBDataBack(copyMap, dnDataDirsMap);
        propertiesFileUpdate(
            targetDirString.toString()
                + File.separatorChar
                + "conf"
                + File.separatorChar
                + CommonConfig.SYSTEM_CONFIG_NAME,
            cnMapProperties);
        propertiesFileUpdate(
            targetDirString.toString()
                + File.separatorChar
                + "conf"
                + File.separatorChar
                + CommonConfig.SYSTEM_CONFIG_NAME,
            dnMapProperties);
      }
    }
    LOGGER.info("all operations are complete");
    delFile(filename);
  }