通过geoserver的rest api使用¶
备份和还原REST API由几个旨在以异步方式使用的资源组成:
资源 |
方法 |
参数和注释 |
---|---|---|
/休息/br/备份/ |
POST |
使用备份参数发布JSON/XML文档,请参见下面的内容 |
/休息/br/备份/backupid |
GET |
返回备份操作的JSON/XML表示形式。见下文 |
/休息/br/备份/backupid |
DELETE |
取消备份操作 |
/休息/br/恢复 |
POST |
使用恢复参数发布JSON/XML文档,请参见下面的内容 |
/休息/br/恢复/恢复ID |
GET |
返回备份操作的JSON/XML表示形式,请参见下面的 |
/休息/br/恢复/恢复ID |
DELETE |
取消还原操作 |
使用示例¶
我们将使用命令行工具curl向geoserver发送HTTP REST请求。
这个 /rest/br/backup/
和 /rest/br/restore
端点接受一个可选的格式后缀,该后缀允许备份/还原存档流式传输到/从客户端,而不是从文件系统写入/读取。
启动备份
准备一个包含代表备份过程配置的JSON对象的文件。
backup_post.json
::{ "backup":{ "archiveFile":"/home/sg/BackupAndRestore/test_rest_1.zip", "overwrite":true, "options":{ } } }
在这种情况下,我们没有在备份配置中指定任何选项,因此将使用默认值。
可用选项包括:
BK_BEST_EFFORT
:跳过任何失败的资源并继续备份过程。违约: false .BK_PARAM_PASSWORDS
:是否应在备份中参数化传出存储密码。设置此选项后,所有存储密码都将替换为一个如下所示的令牌 ${{workspaceName:storeName.passwd.encryptedValue}} . 也见BK_PASSWORD_TOKENS
对于Restore命令。BK_SKIP_SECURITY
:这将从备份中排除安全设置。违约: true .BK_SKIP_SETTINGS
:这将尝试从备份中排除全局设置以及安全设置。违约: true .BK_SKIP_GWC
:此选项将避免备份/还原GWC目录和文件夹。违约: false .BK_CLEANUP_TEMP
:这将尝试在执行结束时删除临时文件夹。违约: true .exclude.file.path
:A;
独立的路径相对于GEOSERVER_DATA_DIR
(例如:‘exclude.file.path=/data/geonode;/monitoring;/geofence’).如果存在,备份/恢复将跳过列出的路径。默认: [] 。警告:security
和workspaces
会受到不同的对待。此选项应仅用于位于GEOSERVER_DATA_DIR
。
也是可选的 Filter
可以传递以将还原操作的范围限制为工作区列表。
例如::
{ "backup":{ "archiveFile":"/home/sg/BackupAndRestore/test_rest_1.zip", "overwrite":true, "options":{ "option": ["BK_BEST_EFFORT=true"] }, "filter": "name IN ('topp','geosolutions-it')" } }
将启动备份过程。
下面是一个示例响应:
HTTP/1.1 201 Created Date: Mon, 01 Aug 2016 14:35:44 GMT Location: http://mygeoserver/geoserver/rest/br/backup/1 Server: Noelios-Restlet-Engine/1.0..8 Content-Type: application/json Transfer-Encoding: chunked { "backup":{ "totalNumberOfSteps":9, "execution":{ "id":1, "version":1, "stepExecutions":{ "@class":"java.util.concurrent.CopyOnWriteArraySet" }, "status":[ "STARTED" ], "startTime":"2016-08-01 14:35:44.802 UTC", "createTime":"2016-08-01 14:35:44.798 UTC", "lastUpdated":"2016-08-01 14:35:44.803 UTC", "exitStatus":{ "exitCode":"UNKNOWN", "exitDescription":"" }, "progress":"1\/9" }, "options":{ "@class":"synchList", "option":[ "OVERWRITE=true" ] }, "warningsList":{ "@class":"synchList" }, "archiveFile":{ "@class":"resource", "$":"\/home\/sg\/BackupAndRestore\/test_rest_1.zip" }, "overwrite":true } }
在备份过程结束时,您可以使用 备份ID 如上所述,并添加 .zip
最后
curl -u "admin:geoserver" -i -X GET "http://mygeoserver/geoserver/rest/br/backup/1.zip" -o 1.zip

查询备份执行的状态
可以查询操作的状态,向响应中列出的位置发出HTTP GET请求,
http://mygeoserver/geoserver/rest/br/backup/$ID.{json/xml}
替换 $ID
与 ID 你想检查的备份操作。
curl -u "admin:geoserver" http://mygeoserver/geoserver/rest/br/backup/1.json
或
curl -u "admin:geoserver" http://mygeoserver/geoserver/rest/br/backup/1.xml
geoserver将响应与该ID对应的备份作业的状态


在这里,您可以看到备份过程中涉及的所有步骤的状态,包括创建时间、开始时间、结束时间、退出状态等。
取消备份
通过发送具有任务ID的HTTP删除请求来取消正在进行的备份
curl -v -XDELETE -u "admin:geoserver" http://mygeoserver/geoserver/rest/br/backup/$ID
替换 $ID
与 ID 您要取消的备份操作。
启动还原
使用表示还原过程配置的JSON对象准备文件
restore_post.json
::{ "restore":{ "archiveFile":"/home/sg/BackupAndRestore/test_rest_1.zip", "options":{ } } }
在这种情况下,我们没有在恢复配置中指定任何选项,因此将使用默认值。
可用选项包括:
BK_DRY_RUN
:仅测试存档文件不保留还原的配置。违约: false .BK_BEST_EFFORT
:跳过任何失败的资源并继续还原过程。违约: false .BK_PASSWORD_TOKENS
:要在传入备份的数据存储密码中替换的等号分隔键/值的逗号分隔列表。例如::BK_PASSWORD_TOKENS=${workspace:store1.passwd.encryptedValye}=foo,${workspace:store2.passwd.encryptedValue}=bar
BK_SKIP_SECURITY
:这将从还原中排除安全设置。违约: true .BK_SKIP_SETTINGS
:这将尝试从备份中排除全局设置以及安全设置。违约: true .BK_PURGE_RESOURCES
:如果'false',此参数将尽可能避免删除传入资源。尤其是,在还原过程中不会删除现有工作区。违约: true .BK_SKIP_GWC
:此选项将避免备份/还原GWC目录和文件夹。违约: false .BK_CLEANUP_TEMP
:这将尝试在执行结束时删除临时文件夹。违约: true .exclude.file.path
:A;
独立的路径相对于GEOSERVER_DATA_DIR
(例如:‘exclude.file.path=/data/geonode;/monitoring;/geofence’).如果存在,备份/恢复将跳过列出的路径。默认: [] 。警告:security
和workspaces
会受到不同的对待。此选项应仅用于位于GEOSERVER_DATA_DIR
。
也是可选的 Filter
可以传递以将还原操作的范围限制为工作区列表。
例如::
{ "restore":{ "archiveFile":"/home/sg/BackupAndRestore/test_rest_1.zip", "options":{ "option": ["BK_DRY_RUN=true"] }, "filter": "name IN ('topp','geosolutions-it')" } }
如果 archiveFile
则将使用在远程文件系统的该路径上指定的归档文件来启动恢复过程。否则,需要从您的本地系统上传存档。
然后为还原过程向geoserver的rest接口端点发出post-http请求
curl -u "admin:geoserver" -i -H "Content-Type: application/json" -X POST --data @restore_post.json http://mygeoserver/geoserver/rest/br/restore/
将启动还原过程。
下面是一个示例响应:
HTTP/1.1 201 Created Date: Mon, 01 Aug 2016 15:07:29 GMT Location: http://mygeoserver/geoserver/rest/br/restore/2 Server: Noelios-Restlet-Engine/1.0..8 Content-Type: application/json Transfer-Encoding: chunked { "restore":{ "totalNumberOfSteps":9, "execution":{ "id":2, "version":1, "stepExecutions":{ "@class":"java.util.concurrent.CopyOnWriteArraySet" }, "status":[ "STARTED" ], "startTime":"2016-08-01 15:07:29.398 UTC", "createTime":"2016-08-01 15:07:29.393 UTC", "lastUpdated":"2016-08-01 15:07:29.398 UTC", "exitStatus":{ "exitCode":"UNKNOWN", "exitDescription":"" }, "progress":"0\/9" }, "options":{ "@class":"synchList" }, "warningsList":{ "@class":"synchList" }, "archiveFile":{ "@class":"resource", "$":"\/home\/sg\/BackupAndRestore\/test_rest_1.zip" } } }

要从本地系统上传归档文件,请省略JSON对象中的archiveFile参数,并传递 --upload-file
卷曲参数:
restore_post.json
::{ "restore":{ "options":{ }, } }curl -u "admin:geoserver" -i -H "Content-Type: application/json" --upload-file "archive_to_restore.zip" -X POST --data @restore_post.json http://localhost:8081/geoserver/rest/br/restore/
本地 archive_to_restore.zip
档案将由还原过程上载和使用。

查询还原操作的状态
http://mygeoserver/geoser/restore/$ID.{{json/xml}}
::{ "restore":{ "execution":{ "hash":2, "key":{ "@class":"long", "$":"2" }, "val":{ "@class":"restore", "totalNumberOfSteps":9, "execution":{ "id":2, "version":2, "stepExecutions":{ "@class":"java.util.concurrent.CopyOnWriteArraySet", "step":[ { "name":"restoreNamespaceInfos", "status":"COMPLETED", "exitStatus":{ "exitCode":"COMPLETED", "exitDescription":"" }, "startTime":"8\/1\/16 3:07 PM", "endTime":"8\/1\/16 3:07 PM", "lastUpdated":"8\/1\/16 3:07 PM", "parameters":{ "input.file.path":"file:\/\/\/opt\/tomcat-geoserver-2.9.x\/temp\/tmpbbe2388a-f26d-4f26-a20f-88c653d88aec", "time":1470064049392 }, "readCount":1, "writeCount":1, "failureExceptions":"" }, ... { "name":"restoreGeoServerSecurityManager", "status":"COMPLETED", "exitStatus":{ "exitCode":"COMPLETED", "exitDescription":"" }, "startTime":"8\/1\/16 3:07 PM", "endTime":"8\/1\/16 3:07 PM", "lastUpdated":"8\/1\/16 3:07 PM", "parameters":{ "input.file.path":"file:\/\/\/opt\/tomcat-geoserver-2.9.x\/temp\/tmpbbe2388a-f26d-4f26-a20f-88c653d88aec", "time":1470064049392 }, "readCount":0, "writeCount":0, "failureExceptions":"" } ] }, "status":"COMPLETED", "startTime":"2016-08-01 15:07:29.398 UTC", "createTime":"2016-08-01 15:07:29.393 UTC", "endTime":"2016-08-01 15:07:30.356 UTC", "lastUpdated":"2016-08-01 15:07:30.772 UTC", "exitStatus":{ "exitCode":"COMPLETED", "exitDescription":"" }, "progress":"9\/9" }, "options":{ "@class":"synchList" }, "warningsList":{ "@class":"synchList" }, "archiveFile":{ "@class":"resource", "$":"\/home\/sg\/BackupAndRestore\/test_rest_1.zip" } } } ...
在这里,您可以看到恢复过程中涉及的所有步骤的状态,包括创建时间、开始时间、结束时间、退出状态等。
取消还原
通过发送HTTP DELETE请求取消正在进行的恢复:
curl -v -XDELETE -u "admin:geoserver" http://mygeoserver/geoserver/rest/br/restore/$ID
替换 $ID
与 ID 要取消的还原操作。