#!/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 脚本进行备份
注意:通过根据各种评论修改答案来解决上述问题:
第一个错误: 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 编写数据库备份脚本的方法