如何使用 SSIS 在 ftp 目录之间传输文件?
我知道我可以删除并重新上传文件,但有更简单的方法吗?
我想将完成的文件传输到“存档”文件夹。
理论上的答案是您将使用命令 RNFR(重命名自)/RNTO(重命名为)的组合来重命名(移动)文件。在您的 FTP 会话中,您会发出类似的命令
ftp> rnfr /src/test/done.txt
ftp> rnto /src/test/Archive/done.txt
我说理论上是因为我使用连接到 z/OS ftp 服务器的 Windows 命令行 FTP 客户端 (system32\ftp.exe) 进行的测试会导致客户端指示 RNFR/RNTO 是Invalid command
Windows 客户端确实实现了重命名方法,该方法在工作表下似乎发出 RNFR/RNTO。
一个简单的重命名看起来像
ftp> rename empty.txt e.txt
350 RNFR accepted. Please supply new name for RNTO.
250 /src/test/empty.txt renamed to /src/test/e.txt
但是,我无法让它在目录下移动
ftp> rename empty.txt Archive
350 RNFR accepted. Please supply new name for RNTO.
550 RNTO fails: /src/test/Archive is a directory.
ftp> rename empty.txt Archive/
350 RNFR accepted. Please supply new name for RNTO.
550 RNTO fails: /src/test/Archive/ is a directory.
ftp> rename empty.txt Archive/emp.txt
350 RNFR accepted. Please supply new name for RNTO.
550 Renaming attempt failed. Rc was 111
我不知道这是客户端实现还是服务器(或两者)的失败。或者,它可能只是我的凭据的权限集不足。
无论您采取什么步骤在命令行中进行重命名,都将是您想要发出的同一组命令。如果您使用的是内置的FTP Task
,您会看到没有可用的重命名。您可能还会发现它是工具箱中最麻烦的任务之一。相反,我强烈主张使用 Windows FTP 客户端的命令文件或使用 .NET FTP 库