部署 Microsoft Windows 文件系统连接器

您可以设置 Google Cloud Search,使其除了返回 Google Workspace 内容之外,还返回贵组织的 Microsoft Windows 共享中的结果。您可以使用 Cloud Search 文件系统连接器,并将其配置为访问指定的 Windows 共享。单个连接器实例可以支持多个 Microsoft Windows 共享。

重要注意事项

在部署文件系统连接器之前,请查看以下注意事项。

持续自动更新

默认情况下,连接器在启动时会持续监控起始路径(配置文件中 fs.src 中的值)。当文件系统报告内容或访问控制发生更改时,连接器会重新抓取文件系统。重新抓取可能会消耗大量资源。如需关闭监控,请将 fs.monitorForUpdates 设置为 false。这会减少资源用量,但会延迟连接器反映更改的时间。了解详情

DFS 访问控制

DFS 系统在其链接上应用访问控制,通常每个 DFS 链接都有自己的 ACL。DFS 使用基于访问的枚举 (ABE) 来限制返回给用户的链接。当 ABE 隔离主目录时,用户可能只会看到一部分 DFS 链接或仅看到一个链接。遍历 DFS 系统时,连接器会遵循 DFS 链接 ACL 和目标的共享 ACL;共享 ACL 继承自 DFS ACL。

已知限制

本部分列出了文件系统连接器的已知限制。

  • 文件系统:此连接器不支持映射驱动器或本地驱动器。
  • 分布式文件系统:映射到 UNC DFS 的驱动器无法正常工作,并且系统可能无法正确读取某些 ACL。
  • 该连接器支持 DFS 命名空间和链接,但不支持 DFS 命名空间中的常规文件夹。
  • 在大多数浏览器中,cloudsearch.google.com 中的文件链接或由 Query API 返回的文件链接都无法点击。

系统要求

在部署文件系统连接器之前,请确保宿主机满足以下要求:

系统要求
操作系统
  • Windows Server 2016
  • Windows Server 2012
  • Windows Server 2008 R2
软件
  • Java JRE 1.8(已安装在运行连接器的计算机上)
文件系统协议
  • 服务器消息块 (SMB) - SMB1
  • 服务器消息块 (SMB) - SMB2
  • 分布式文件系统 (DFS)

不支持:本地 Windows 文件系统、NFS 2.0、NFS 3.0 或本地 Linux 文件系统。

部署连接器

请按照以下步骤部署文件系统连接器。

前提条件

在部署连接器之前,请确保您的环境具备以下组件:

所需的 Microsoft Windows 账号权限

运行连接器的 Windows 账号必须具有以下权限:

  • 列出文件夹内容。
  • 读取文档内容。
  • 读取文件和文件夹属性。
  • 读取对文件和文件夹的权限 (ACL)。
  • 写入基本属性。

加入以下任一群组通常会授予足够的权限:管理员、超级用户、打印操作员或服务器操作员。

第 1 步:安装连接器

从 GitHub 下载或克隆连接器代码库,然后构建连接器软件包。

  1. 从 GitHub 获取连接器代码库并构建它。

    如需在 Windows 服务器上使用 Git,请执行以下操作:

    > git clone https://github.com/google-cloudsearch/windows-filesystems-connector.git
    > cd windows-filesystems-connector
    > git checkout tags/v1-0.0.3

    直接下载:

    1. 前往 windows-filesystems-connector
    2. 依次点击克隆或下载 > 下载 ZIP
    3. 解压缩该软件包并移至相应目录。
  2. 使用 Apache Maven 构建连接器:

    > mvn package
    如需跳过测试,请使用 mvn package -DskipTests

  3. 将连接器 zip 文件解压缩到安装目录:

    > cp target/google-cloudsearch-windows-filesystems-connector-v1-0.0.3.zip installation-dir
    > cd installation-dir
    > unzip google-cloudsearch-windows-filesystems-connector-v1-0.0.3.zip
    > cd google-cloudsearch-windows-filesystems-connector-v1-0.0.3

第 2 步:创建配置文件

安装连接器后,创建一个包含连接器设置的配置文件。

  1. 在连接器目录中,创建一个名为 connector-config.properties 的文件。
  2. 以键值对的形式添加参数。例如:

    # Required parameters
    api.serviceAccountPrivateKeyFile=/path/to/file.json
    api.sourceId=0123456789abcde
    api.identitySourceId=a1b1c1234567
    
    # File system access
    fs.src=\\\\host\\share;\\\\dfshost\\dfsnamespace
    
    # Optional parameters
    traverse.abortAfterExceptions=500
    fs.monitorForUpdates = true
    fs.preserveLastAccessTime = IF_ALLOWED
    

    如需了解特定于文件系统的参数,请参阅配置参数参考文档。如需查看所有 Cloud Search 连接器使用的常见参数的列表,请参阅 Google 提供的连接器参数

第 3 步:启用日志记录

创建日志目录并创建日志记录配置文件。

  1. 在连接器目录中创建一个名为 logs 的文件夹。
  2. 创建一个名为 logging.properties 且包含以下内容的文件:

    handlers = java.util.logging.ConsoleHandler,java.util.logging.FileHandler
    # Default log level
    .level = WARNING
    com.google.enterprise.cloudsearch.level = INFO
    com.google.enterprise.cloudsearch.fs.level = INFO
    
    # uncomment line below to increase logging level to enable API trace
    #com.google.api.client.http.level = FINE
    java.util.logging.ConsoleHandler.level = INFO
    java.util.logging.FileHandler.pattern=logs/connector-fs.%g.log
    java.util.logging.FileHandler.limit=10485760
    java.util.logging.FileHandler.count=10
    java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
    

第 4 步:(可选)配置媒体类型

连接器会尝试使用其默认机制检测文件媒体类型,在 Windows 上,该机制依赖于注册表条目。如果缺少文件扩展名的注册表条目,连接器可能无法正确检测到媒体类型。如果系统未正确检测到媒体类型,或者您想替换扩展程序的默认类型,请按以下步骤操作:

  1. 在连接器目录中创建一个名为 mime-type.properties 的文件。
  2. extension=media/type 格式输入扩展名和类型: properties xlsx=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet one=application/msonenote txt=text/plain pdf=application/pdf

第 5 步:运行文件系统连接器

从主机启动连接器:

> java -jar google-cloudsearch-windows-filesystems-connector-v1-0.0.3.jar -Djava.util.logging.config.file=logging.properties[ -Dconfig=my.config]

默认情况下,连接器会在运行连接器的目录中查找名为 connector-config.properties 的配置文件。如果您的配置文件具有不同的名称或位于其他目录中,请使用 -Dconfig 参数指定其路径。

配置参数参考

下表列出了用于配置文件系统连接器的参数,并对这些参数进行了说明。

数据源访问权限

设置 参数
数据源 ID api.sourceId=1234567890abcdef

必需。Cloud Search 源 ID。

服务账号 api.serviceAccountPrivateKeyFile=./PrivateKey.json

必需。服务账号密钥文件的路径。

身份源 ID api.identitySourceId=x0987654321

必需。由 Google Workspace 管理员设置的 Cloud Search 身份源 ID,用于通过 GCDS 同步 Active Directory 身份。

文件系统访问

使用这些参数可指定要抓取的文件系统来源。

设置 参数
源文件系统 fs.src=path1[,path2, ...]

必需。将源文件系统指定为一个或多个 UNC 源,这些源由 fs.src.separator 配置的分隔符分隔。如果使用未包含在 Latin1 中的字符,请使用 Java Unicode 转义符对其进行编码。

路径分隔符

设置 参数
路径分隔符 fs.src.separator=separator-character

默认分隔符为“;”。如果您的源路径包含英文分号,则可以设置与路径中的字符没有冲突并且没有被属性文件语法本身预留的其他分隔符,例如英文逗号“,”。

如果 fs.src.separator 值为空字符串,则 fs.src 值会被视为单个路径。

连接器行为

您可以使用这些参数来调整连接器抓取文件系统的方式。

设置 参数
Windows 网域 fs.supportedDomain=domain

如要允许使用 GCDS 设置的用户通过 Cloud Search 访问文档,则此为必填参数。请将此参数指定为 Active Directory 的单个 NetBIOS 域名。

在 ACL 中添加账号 fs.supportedAccounts=account-1[, account-2,...]

以英文逗号分隔的账号列表,无论这些账号是否为内置账号,都会添加到 ACL 中。

默认值为 BUILTIN\\Administrators,Everyone,BUILTIN\\Users, BUILTIN\\Guest,NT AUTHORITY\\INTERACTIVE, NT AUTHORITY\\Authenticated Users

从 ACL 中排除内置账号 fs.builtinGroupPrefix=prefix

指定内置账号的前缀。以此前缀开头的账号会被视为内置账号,将会从 ACL 中排除。

默认值为 BUILTIN\\

允许将隐藏文件和文件夹编入索引 fs.crawlHiddenFiles=boolean

设置为 true 可抓取隐藏文件。默认为 false

允许将抓取的文件夹列表和 DFS 命名空间枚举编入索引 fs.indexFolders=boolean

如果设置为 true(默认值),当连接器抓取文件夹时,会创建一个 CONTAINER_ITEM 对象。如果设置为 false,则该连接器会改为创建一个 VIRTUAL_CONTAINER_ITEM 对象。

启用文件系统更改监控功能 fs.monitorForUpdates=boolean

如果设置为 true(默认值),连接器会在内容或访问权限控制发生更改时自动重新抓取。将此值设置为 false 可减少资源用量,但会延迟搜索结果中反映更改的速度。

设置目录缓存的大小上限 fs.directoryCacheSize=number-of-entries

目录缓存的大小上限。连接器使用缓存来识别隐藏文件夹,以避免将隐藏文件夹中的文件和文件夹编入索引。

默认值为 50,000 个条目,通常占用 10-15 MB RAM。

时间戳保留

使用这些参数可指定连接器如何处理时间戳保留。

设置 参数
保留访问时间 fs.preserveLastAccessTime=value

在抓取文件和文件夹时,连接器可能会将它们的上次访问时间戳更改为抓取时间。如果不保留上次访问时间,备份和归档系统可能不会将相应的文件和文件夹转移到辅助存储空间,因为连接器访问过这些文件和文件夹。

默认情况下,fs.preserveLastAccessTime 设置为 ALWAYS,这意味着连接器会尝试保留上次访问时间。如果运行连接器的用户账号缺少写入文件属性的权限,连接器将无法恢复上次访问时间。如果设置为 ALWAYS 且连接器无法保留上次访问时间,则它会拒绝文件系统的抓取请求,以免更改文件时间戳。

可能的值包括:

  • ALWAYS:连接器在抓取文件和文件夹时会尝试保留上次访问时间。如果无法保留上次访问时间,则会拒绝文件系统的所有后续抓取请求,以避免更改时间戳。
  • IF_ALLOWED:连接器在抓取文件和文件夹时会尝试保留上次访问时间。即使某些时间戳可能无法保留,它也会继续抓取。
  • NEVER:连接器不会尝试保留上次访问时间。
仅抓取在特定日期之后访问过的文件 fs.lastAccessedDate=YYYY-MM-DD

仅当上次访问时间晚于指定日期(YYYY-MM-DD,ISO8601 格式)时,才抓取内容。 默认值为 disabled。 例如,2010-01-01 会抓取 2010 年初之后访问过的内容。不能与 fs.lastAccessedDays 搭配使用。

仅抓取在过去指定天数内访问过的文件 fs.lastAccessedDays=number-of-days

仅当上次访问时间在当前时间起指定天数内时,才抓取内容。默认值为 disabled。有助于使旧内容过期;例如,365,则系统会抓取过去一年内被访问过的内容。不能与 fs.lastAccessedDate 搭配使用。

仅抓取在特定日期之后修改的文件 fs.lastModifiedDate=YYYY-MM-DD

仅当内容的上次修改时间晚于指定日期(YYYY-MM-DD,ISO8601 格式)时,才抓取相应内容。 默认值为 disabled。 例如,2010-01-01 会抓取自 2010 年年初以来修改过的内容。不能与 fs.lastModifiedDays 搭配使用。

仅抓取在过去指定天数内修改过的文件 fs.lastModifiedDays=number-of-days

仅当上次修改时间在当前时间起指定天数内时,才抓取内容。默认值为 disabled。适用于使旧内容过期;例如,365 抓取过去一年内修改过的内容。 不能与 fs.lastModifiedDate 搭配使用。

跳过文件共享 ACL

如果连接器缺少读取共享 ACL 的权限,您可以将其设置为忽略共享 ACL。然后,系统会返回具有许可型共享 ACL 的内容。

设置 参数
跳过共享 ACL fs.skipShareAccessControl=boolean

设置为 true 可忽略共享 ACL。默认值为 false