我在 Apache Directory Studio 中创建了一个服务器。我还创建了一个分区并将一些条目从 Java 中插入该服务器。现在我想以编程方式在 LDIF 文件中备份和恢复这些数据。我是 LDAP 新手。因此,请向我展示一个详细的方法,以使用我的服务器中的 java 以编程方式将条目导出和导入到 LDIF。
当前解决方案:
现在我正在使用这种方法进行备份:
EntryCursor cursor = connection.search(new Dn("o=partition"), "(ObjectClass=*)", SearchScope.SUBTREE, "*", "+");
Charset charset = Charset.forName("UTF-8");
Path filePath = Paths.get("src/main/resources", "backup.ldif");
BufferedWriter writer = Files.newBufferedWriter(filePath, charset);
String st = "";
while (cursor.next()) {
Entry entry = cursor.get();
String ss = LdifUtils.convertToLdif(entry);
st += ss + "\n";
}
writer.write(st);
writer.close();
为了恢复我正在使用这个:
InputStream is = new FileInputStream(filepath);
LdifReader entries = new LdifReader(is);
for (LdifEntry ldifEntry : entries) {
Entry entry = ldifEntry.getEntry();
AddRequest addRequest = new AddRequestImpl();
addRequest.setEntry(entry);
addRequest.addControl(new ManageDsaITImpl());
AddResponse res = connection.add(addRequest);
}
但我不确定这是否是正确的方法。
此解决方案的问题:
当我备份我的数据库时,它会以随机方式将条目写入 LDIF,因此在我手动修复条目顺序之前,还原不起作用。我有什么更好的方法吗?请有人帮助我。