显然,在实现FTP服务器方面存在一些方面,这些方面留给了RFC(959)的读者。 (就像response to the LIST command一样。)这相当于试图找出其他实现中的普遍共识,并且这样做。
由于没有明确的命令将文件从一个目录移动到另一个目录,我发现这通常是使用rename commands(RNFR,RNTO)完成的。例如,在WinSCP中,如果将文件从/ data / dir / file拖到父目录(..),它就会
RNFR /data/dir/file
RNTO /data/file
在野外是否有任何客户在野外使用相对路径?例如,如果当前工作目录是/ data / dir,是否有任何客户端可以执行此操作?
RNFR file
RNTO ../file
或者服务器通常会使用命令行客户端的相对路径来理解重命名吗?
答案 0 :(得分:1)
RNFR
和RNTO
是显式命令,用于将文件从一个目录移动到另一个目录。
因此,您可以使用它们在目录之间移动文件。在* nix操作系统上,重命名和移动是相同的操作(至少只要你使用相同的文件系统)。
两个命令都以pathname
为参数,就像大多数其他FTP命令一样(例如CWD
,DELE
)。
RNFR <SP> <pathname> <CRLF>
RNTO <SP> <pathname> <CRLF>
关于pathname
,RFC 959在第4.1.3节中说明了
的语法 路径名必须符合服务器站点约定(使用 标准默认值适用)
我相信这意味着您可以合理地期望服务器能够理解..
中的RNTO
,就像服务器了解CWD ..
如果有任何(GUI?)客户端使用此功能?我不会这么说。为什么客户会费心去寻找移动操作的公共根并计算相对路径,如果它只是简单地使用绝对路径?
正如@Remy已经评论过的那样,目录列表格式由RFC 3659中的MLSD
和MLST
命令标准化。
大多数现代FTP服务器都支持这些,除了IIS FTP(无论如何都不称为现代FTP服务器)。