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);
}