通过 SFTP 上传某些文件和文件夹会导致名称变为大写

通过 SFTP 上传某些文件和文件夹会导致名称变为大写

我电脑上的一个目录中有一小组文件和文件夹引起了问题。当我通过 SFTP(在 OSX 上使用 Transmit,一个 GUI)将它们上传到我的网络主机(Dreamhost)时,大多数文件和文件夹都按预期传输。但其中有几个在网络主机上转换为大写。示例:slider.js 变成 SLIDER.JS

权限
本地机器上的 644 slider.js
网络主机上的 644 SLIDER.JS

我不确定从哪里开始调试这个问题,所以如果需要更多信息,请询问。

更新时间:2011 年 11 月 30 日下午 5 点(美国东部时间)
- 我只需将文件 slider.js 重命名为 slider2.js,然后再重命名为 slider.js,即可解决该问题。我仍然很想知道是什么原因导致了这个问题。
-sftp在命令行上使用 传输了有问题的文件,但没有大写。
- 我有一台运行 OSX 10.7.2 的 MAC。对文件系统了解不多,但可以在 [Ars Technica 对 OSX 10.7 的评论][1] 中找到相关信息。

经过进一步调查,我发现可以ftp识别case命令。详情如下:

在 mget 命令期间切换远程计算机文件名大小写映射。当大小写打开时(默认关闭),所有字母均为大写的远程计算机文件名将以映射为小写的字母形式写入本地目录中。

会不会是 [Transmit ftp app][1] 错误地使用了该命令?这只是猜测。

答案1

我假设你的文件系统是 HFS+(假设你在 OSX 上使用 Transmit)。HFS+ 有两种类型,一种是区分大小写的,另一种是不区分大小写的(https://apple.stackexchange.com/questions/71357/how-to-check-if-my-hd-is-case-sensitive-or-not)。但是两者都保留大小写(http://en.wikipedia.org/wiki/Case_preservation)。HFS+ 的默认设置是不区分大小写的。您可以更改它,但这可能会破坏某些应用程序,因此我不建议这样做。

就您的情况而言,这意味着该文件在您的文件系统中创建为“SLIDER.JS”。您可以将其打开为“slider.js”、“Slider.js”以及其大小写的任何其他变体。但是,当您使用您的应用发送它时,它可能会使用它的规范版本(保留大小写)。

正如您所提到的,将其重命名(我假设来自 Finder)为“slider2.js”,然后再重命名为“slider.js”,确保保留的大小写现在全部为小写。

相关内容