【问题标题】:Preserve filenames on NFS between Windows/Linux [closed]在 Windows/Linux 之间的 NFS 上保留文件名 [关闭]
【发布时间】:2020-04-04 11:20:57
【问题描述】:

是否有任何方法可以配置 NFSClient 或如何在 Windows 或 Linux 上安装共享,以便我可以跨系统保留文件名?

目前,我们有大量在 Windows 上编写的文件,现在已移至 Google Filestore (NFSv3),以便可以从其他服务器访问它们。问题是许多文件的名称中包含瑞典字符(Å Ä Ö),当这些文件在创建它们的相反系统中列出时,文件名变得不可读(文件内容没有问题,只是名字)

目前我正计划以编程方式重命名所有文件以删除违规字符,但如果可能的话,我宁愿不必这样做。

下面是从 Windows 和 Linux 方面看它的示例。在 Linux 上创建的 Linux 文件和在 Windows 上创建的 Windows 文件。

Linux

窗户

【问题讨论】:

    标签: linux windows filenames nfs google-cloud-filestore


    【解决方案1】:

    此答案可能无法帮助您解决问题,但我想我会提供一些可能有助于您(和其他人)研究的理论概述。

    您可能还想阅读this

    不管怎样,我们开始吧:

    这里有很多东西在起作用。

    • NTFS 使用的编码以及 Google Filestore 使用的任何文件系统。
    • 您用于创建和查看这些文件名的程序支持的编码。
    • 您使用的终端程序支持的编码。
    • NFSv3 支持的编码。

    文件系统

    在 Linux 上,文件名只有两条规则:它们不能包含斜杠 (/),它们不能包含空字节 (\0)。 ASCII 和 UTF-8 都符合这个规则,基本都是 linux 文件系统支持的编码。

    Windows might have different ideas。可能需要一些配置才能让 Windows 文件系统以不同的编码发出字符。

    创建和列出文件

    在 Linux 上,您的文件名为 almost always encoded in UTF-8。然后,ls 和 kin 一般不会想太多,只是假设文件系统需要的上述规则。

    Windows 的dir 显然知道如何使用 NTFS 的字符编码,但它可以读取 Linux 的 UTF-8 文件名吗?据我所知,它支持它with some configuration

    终端

    现代 Linux 终端程序都是 UTF-8,但可能需要安装对其他字符集的支持(因为 Windows)。

    在 Windows 上,它似乎有 not been fully supported as of last year。也许这已经改变了,或者你可能需要另一个终端。上述配置可能会有所帮助。

    NFS

    NFSv4.1 及更高版本明确支持 UTF-8 和明确的 Unix Windows 互操作性目标。

    NFSv3 没有这些,对任何非 ASCII 的支持是 not guaranteed

    我发现 one implementation 支持 UTF-8 over NFSv3,但 Google Filestore 的文档只有 says“支持任何 NFSv3 兼容的客户端”。

    做什么

    继续重命名文件。互操作性还有更多问题,例如what characters are reserved 的不同概念,有很多限制,最好的办法是确保所有文件名都是简单的纯 ASCII,我什至会避免文件名中的空格之类的东西,这让生活变得更轻松。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-28
      • 2012-05-02
      • 2012-08-13
      • 1970-01-01
      • 1970-01-01
      • 2020-12-08
      • 2011-07-20
      相关资源
      最近更新 更多