1

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

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

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

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

Linux

在此处输入图像描述

视窗

在此处输入图像描述

4

1 回答 1

3

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

您可能还想阅读这篇文章。

无论如何,我们开始:

这里有很多东西在玩。

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

文件系统

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

Windows可能有不同的想法。可能需要一些配置才能让 Windows 文件系统以不同的编码发出字符。

创建和列出文件

在 Linux 上,您的文件名几乎总是以 UTF-8 编码。然后,ls和 kin 通常不会想太多,只是假设文件系统需要的上述规则。

Windowsdir显然知道如何使用 NTFS 的字符编码,但它可以读取 Linux 的 UTF-8 文件名吗?据我所知,它通过一些配置支持它。

终端

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

在 Windows 上,截至去年,它似乎还没有得到完全支持。也许这已经改变了,或者你可能需要另一个终端。上述配置可能会有所帮助。

NFS

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

NFSv3 没有这些,并且不保证对任何非 ASCII 的支持。

我找到了一种通过 NFSv3 支持 UTF-8 的实现,但 Google Filestore 的文档只“支持任何 NFSv3 兼容的客户端”。

该怎么办

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

于 2019-12-15T02:43:14.073 回答