通过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":{
      }
   }
}

在这种情况下,我们没有在备份配置中指定任何选项,因此将使用默认值。

可用选项包括:

  1. BK_BEST_EFFORT :跳过任何失败的资源并继续备份过程。违约: false .

  2. BK_PARAM_PASSWORDS :是否应在备份中参数化传出存储密码。设置此选项后,所有存储密码都将替换为一个如下所示的令牌 ${{workspaceName:storeName.passwd.encryptedValue}} . 也见 BK_PASSWORD_TOKENS 对于Restore命令。

  3. BK_SKIP_SECURITY :这将从备份中排除安全设置。违约: true .

  4. BK_SKIP_SETTINGS :这将尝试从备份中排除全局设置以及安全设置。违约: true .

  5. BK_SKIP_GWC :此选项将避免备份/还原GWC目录和文件夹。违约: false .

  6. BK_CLEANUP_TEMP :这将尝试在执行结束时删除临时文件夹。违约: true .

  7. exclude.file.path :A ; 独立的路径相对于 GEOSERVER_DATA_DIR (例如:‘exclude.file.path=/data/geonode;/monitoring;/geofence’).如果存在,备份/恢复将跳过列出的路径。默认: [] 。警告: securityworkspaces 会受到不同的对待。此选项应仅用于位于 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
../../_images/usagerest001.png

查询备份执行的状态

可以查询操作的状态,向响应中列出的位置发出HTTP GET请求,

http://mygeoserver/geoserver/rest/br/backup/$ID.{json/xml}

替换 $IDID 你想检查的备份操作。

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对应的备份作业的状态

../../_images/usagerest002.png
../../_images/usagerest003.png

在这里,您可以看到备份过程中涉及的所有步骤的状态,包括创建时间、开始时间、结束时间、退出状态等。

取消备份

通过发送具有任务ID的HTTP删除请求来取消正在进行的备份

curl -v -XDELETE -u "admin:geoserver" http://mygeoserver/geoserver/rest/br/backup/$ID

替换 $IDID 您要取消的备份操作。

启动还原

使用表示还原过程配置的JSON对象准备文件

restore_post.json ::

{
   "restore":{
      "archiveFile":"/home/sg/BackupAndRestore/test_rest_1.zip",
      "options":{
      }
   }
}

在这种情况下,我们没有在恢复配置中指定任何选项,因此将使用默认值。

可用选项包括:

  1. BK_DRY_RUN :仅测试存档文件不保留还原的配置。违约: false .

  2. BK_BEST_EFFORT :跳过任何失败的资源并继续还原过程。违约: false .

  3. BK_PASSWORD_TOKENS :要在传入备份的数据存储密码中替换的等号分隔键/值的逗号分隔列表。例如::

    BK_PASSWORD_TOKENS=${workspace:store1.passwd.encryptedValye}=foo,${workspace:store2.passwd.encryptedValue}=bar
    
  4. BK_SKIP_SECURITY :这将从还原中排除安全设置。违约: true .

  5. BK_SKIP_SETTINGS :这将尝试从备份中排除全局设置以及安全设置。违约: true .

  6. BK_PURGE_RESOURCES :如果'false',此参数将尽可能避免删除传入资源。尤其是,在还原过程中不会删除现有工作区。违约: true .

  7. BK_SKIP_GWC :此选项将避免备份/还原GWC目录和文件夹。违约: false .

  8. BK_CLEANUP_TEMP :这将尝试在执行结束时删除临时文件夹。违约: true .

  9. exclude.file.path :A ; 独立的路径相对于 GEOSERVER_DATA_DIR (例如:‘exclude.file.path=/data/geonode;/monitoring;/geofence’).如果存在,备份/恢复将跳过列出的路径。默认: [] 。警告: securityworkspaces 会受到不同的对待。此选项应仅用于位于 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"
      }
   }
}
../../_images/usagerest004.png

要从本地系统上传归档文件,请省略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 档案将由还原过程上载和使用。

../../_images/usagerest005.png

查询还原操作的状态

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

替换 $IDID 要取消的还原操作。