1

我已经使用 docker-compose 安装了最后一个SeaweedFS版本( ) ,version 30GB 1.72 linux amd64我正在运行master,服务器。volumefiler

所有系统似乎工作正常,我可以上传和下载文件,但是当我在目录上查询时的 API 响应与官方文档中显示的响应不同。

例如,当我/dir1使用以下命令查询目录时:

curl -H "accept: application/json" localhost:8888/dir1/?pretty=y

响应如下:

{
  "Path": "/dir1",
  "Entries": [
    {
      "FullPath": "/dir1/nyfile.bin",
      "Mtime": "2020-04-16T17:56:55Z",
      "Crtime": "2020-04-16T17:56:55Z",
      "Mode": 432,
      "Uid": 1000,
      "Gid": 1000,
      "Mime": "application/octet-stream",
      "Replication": "000",
      "Collection": "",
      "TtlSec": 0,
      "UserName": "",
      "GroupNames": null,
      "SymlinkTarget": "",
      "Md5": "zQnaPjjZsQpiU+N3RXp7GQ==",
      "Extended": null,
      "chunks": [
        {
          "file_id": "7,030d2d9790",
          "size": 55320265,
          "mtime": 1587059815546104803,
          "e_tag": "7b71a215",
          "fid": {
            "volume_id": 7,
            "file_key": 3,
            "cookie": 221091728
          }
        }
      ]
    }
  ],
  "Limit": 100,
  "LastFileName": "weed.bin",
  "ShouldDisplayLoadMore": false
}

该响应与文档中的示例完全不同(https://github.com/chrislusf/seaweedfs/wiki/Filer-Server-API):

> curl -H "Accept: application/json" "http://localhost:8888/javascript/?pretty=y"            # list all files under /javascript/
{
  "Directory": "/javascript/",
  "Files": [
    {
      "name": "new_name.js",
      "fid": "3,034389657e"
    },
    {
      "name": "report.js",
      "fid": "7,0254f1f3fd"
    }
  ],
  "Subdirectories": null
}

所以,我有一些问题:

  • 新 Filer REST API 的文档(如果存在)在哪里?
  • 如何使用新 API 确定什么是文件和目录?
    • 目前,我正在使用“块”属性,如果有“块”那么它是一个文件,否则是一个目录。
  • 如何获取文件的大小?我应该总结所有块中的 size 属性吗?
4

1 回答 1

1
  • 文档还没有。内部不使用 REST API。使用 gRPC 进行更高级的用法。
  • 模式遵循 os.Mode https://golang.org/pkg/os/#FileMode。使用 os.ModeDir 来确定文件或目录。
  • 块可能有重叠。使用最高水印作为文件大小。
于 2020-04-19T18:59:32.973 回答