FTP 服务器通常如何处理对已存在的文件的重命名?也就是说,现有的目标文件会被覆盖吗?还是会出现错误?是否有关于 FTP 服务器应如何处理此问题的规范,还是它取决于操作系统或实现?
Linux 上的 vsftpd 似乎被覆盖了,使用 Vista 上的 FileZilla 我得到 550 个文件存在...
答案1
在我设置了相当多的 FTP 服务器之后,我可以说这是特定于服务器的。一些 FTP 服务器具有一项功能,它们不会返回 550 错误,而是将上传的文件重命名为 file.1、file.2 等。这对于在意外覆盖的情况下保留原始文件非常方便。
我喜欢使用的 FTP 服务器是纯FTPd。它有这个功能与-r
开关:
- '-r': 不覆盖现有文件。上传文件名 已存在会导致自动重命名。文件名为 xyz、xyz.1、xyz.2、 xyz.3等
答案2
这可能与服务器有关,但通常旧文件将被覆盖。但有一个很大的警告:根据文件(及其所在目录)的所有权和权限设置,否则将被覆盖的文件可能会导致错误,因为您的用户帐户没有删除/修改它的正确访问权限。
FTP 客户端应用程序的行为也可能不同。有些应用程序默认只发送您指定的文件,在服务器允许的情况下覆盖服务器中的文件;而有些应用程序可能会检查当前服务器目录列表,并先询问您是否确定。