Я создал сервер в 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 случайным образом, поэтому восстановление не работает, пока я не исправлю порядок записей вручную. Есть ли лучший способ? Пожалуйста, помогите мне.