FTP 上传和覆盖不会覆盖,但会创建 [file.ext].#

FTP 上传和覆盖不会覆盖,但会创建 [file.ext].#

这个问题与StackOverflow 中的一个,我被建议在这里问这个问题。如果多帖不合适,我很抱歉。

我遇到了一个非常奇怪的 FTP 问题,让我烦透了。这是我第一次遇到这个问题。

当我上传文件时,它不会覆盖原始文件,而是重命名为 [原始文件.ext].1(或 [文件].2,如果 [文件].1 已存在)。例如,如果 style.css 存在于服务器上,并且我下载并编辑它,当我将其上传回原位时,它会“重命名”为样式.css.1. 第二次尝试会产生第三个文件,名为样式.css.2

我有自己的机器,上面安装了 OpenSUSE 11.4 64 位(相对较新的安装,刚刚配置)。我正在使用 pure-ftpd 并使用 YAST 控制面板来操作设置。特别是 Umask(umask 文件:umask 目录)设置设置为 000:000(唯一一个将为上传文件提供与现有文件相同权限的设置)。我为每个人提供了 Chrooted ftp 访问权限,为了让 FTP 能够访问 /srv/www/,我使用了本网站使用 bind 操作将 /srv/www/ 挂载到 /home/[user]/ftp/ 内。因此,对于非常安全的用户,FTP 访问被 chrooted,但用户仍然可以访问 /srv/www/ 内的内容。

我还花了一些时间为 /srv/www/ 的内容赋予与用户本身相同的权限和用户:组(即,不应该存在任何权限问题)。

我使用 WS_FTP Pro 2007 访问该网站,并使用 Notepad++(通过 NppFTP),两个客户端都存在同样的问题:我可以正常下载文件,但上传时文件后会附加“.#”(.1、.2、.3 等),而不是覆盖原始文件。这些新文件具有与原始文件相同的权限和所有权(用户:组),因此我完全不明白为什么上传会创建新文件而不是覆盖。

编辑以添加:从那时起,我尝试了几种不同的 FTP 客户端,包括 Windows 命令行中的 FTP 功能,最终结果相同。

答案1

pure-ftpd 中有多次提到“自动重命名”功能。是否只需将其关闭即可?http://pureftpd.sourceforge.net/README

虽然文件名描述使得这种情况看起来不太可能,但是 ftp 客户端是否使用了 STOU 选项?http://www.nsftools.com/tips/RawFTP.htm

这个问答也可能会有所帮助 FTP 服务器如何处理现有文件的重命名?

相关内容