使用rest api进行marklogic备份

问题描述 投票:0回答:1
       #!/bin/bash
       curl --anyauth --user admin:admin -X POST -i -d @./bkp.xqy \
       -H "Content-type: application/x-www-form-urlencoded" \
-H "Accept: multipart/mixed; boundary=BOUNDARY" \
http://localhost:8000/v1/eval

我正在尝试上面的 shell 脚本,我的 bkp.xqy 看起来像这样

xquery version "1.0-ml";
xdmp:database-backup(xdmp:database-forests(xdmp:database("Documents")),
"C:\Users\C70945\mlbackup", fn:true(), "C:\Users\C70945\mlbackup", 15)

当我运行 shell 时,出现以下错误

HTTP/1.1 403 Forbidden
Server: MarkLogic
Connection: close
Content-Type: text/html; charset=UTF-8

<!DOCTYPE HTML PUBLIC '-//IETF//DTD HTML 2.0//EN'>
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You have attempted to access an HTTPS server using HTTP.</p>
</body></html>

我正在寻找使用此 shell 脚本进行备份

shell marklogic marklogic-10
1个回答
1
投票

注意:通过根据各种评论修改答案来解决上述问题:

第一个错误: SSL 问题。来自我之前的帖子和不同人的评论:

1。 SSL 与非 SSL 这是通过以下方式解决的: 变化:

http://localhost:8000/v1/eval
致:
https://localhost:8000/v1/eval

2。自签名证书 CuRL 不喜欢这样..(感谢 @mads-hansen)这已通过

-k
标志

解决

3.现在我们转向一个新错误(请参阅注释)“XDMP-EVALQUERY:” 这是由于脚本

bkp.xqy
不遵循记录的格式造成的。请参阅此处:https://docs.marklogic.com/REST/POST/v1/eval,特别是第二个示例。

该请求是

x-www-form-urlencoded
请求。您实际上是在体内传递一个必须命名的字段。

您的文件需要以以下内容开头:

xquery=
作为第一行。

我用于测试的最简单的文件:

xquery=
xquery version "1.0-ml";
1

从 eval 端点返回此值(“1”是我在脚本中的值):

--BOUNDARY
Content-Type: text/plain
X-Primitive: integer

1
--BOUNDARY--

关于您的脚本,有一个管理API可以为您运行备份命令。请参阅此处的示例:KB:使用 MarkLogic ReST API 编写数据库备份脚本的方法

© www.soinside.com 2019 - 2024. All rights reserved.