From eadaf35793b5980685fa2c784bf706e50b6f3c8d Mon Sep 17 00:00:00 2001 From: HUANG Rongjun Date: Mon, 11 Sep 2023 13:41:20 +0800 Subject: [PATCH] Create ZooKeeperNodeCopy.java --- .../basic/zookeeper/ZooKeeperNodeCopy.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/main/java/io/itjun/basic/zookeeper/ZooKeeperNodeCopy.java diff --git a/src/main/java/io/itjun/basic/zookeeper/ZooKeeperNodeCopy.java b/src/main/java/io/itjun/basic/zookeeper/ZooKeeperNodeCopy.java new file mode 100644 index 0000000..28244bb --- /dev/null +++ b/src/main/java/io/itjun/basic/zookeeper/ZooKeeperNodeCopy.java @@ -0,0 +1,31 @@ +package io.itjun.basic.zookeeper; + +import java.util.List; + +import org.apache.zookeeper.CreateMode; +import org.apache.zookeeper.ZooDefs; +import org.apache.zookeeper.ZooKeeper; + +public class ZooKeeperNodeCopy { + private static final String Source = "/4plc/itjun"; + private static final String Target = "/4plc/itjun-linux"; + private static ZooKeeper zooKeeper; + + public static void main(String[] args) throws Exception { + zooKeeper = ZkServer.get().client(); + copy(Source, Target); + } + + private static void copy(String source, String target) throws Exception { + byte[] data = zooKeeper.getData(source, false, null); + zooKeeper.create(target, data, ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); + + List children = zooKeeper.getChildren(source, false); + for (String child : children) { + String childSourcePath = source + "/" + child; + String childDestinationPath = target + "/" + child; + copy(childSourcePath, childDestinationPath); + } + } + +}