我们每天都会在 FTP 上发布通话录音。作为备份,我想每天将这些录音从 FTP 复制到本地驱动器。是否可以将整个文件夹作为一个整体复制并将该文件夹粘贴到我的本地并重命名它?
提前致谢
2008 年的 BIDS 有一个 FTP 任务,但我从不使用它。SFTP等也有几个第三方扩展,但我不使用这些。
[编辑:由于上述链接指向正在关闭的 CodePlex,因此我将提供更多详细信息。第一个链接指向名为“SSIS SFTP 任务控制流组件”的项目,第二个链接指向名为“SSIS 扩展 - SFTP 任务、PGP 任务、Zip 任务”的项目。截至 2017 年 6 月,这些项目似乎没有明显的重新托管。]
我倾向于将WinSCP 与脚本文件一起使用。这当然是微软最少的方法,但是,IMX,它更加万无一失。这具有适用于 FTP、FTPS 和 SFTP 的优势。它的缺点是您以纯文本形式存储密码。您可以使用 WinSCP 的会话管理器将其存储在注册表中,但我相信这是一个每个用户的注册表,当您拥有使用 SSIS 代理帐户的 SQL 代理时,它可能会带来很多乐趣。
使用您要使用的命令创建脚本文件。请务必指定option batch abort
和option confirm off
。您可能还想指定option failonnomatch
,但我自己还没有测试过那个,因为我仍然使用不支持该选项的稍旧版本。
我的往往看起来像这样:
# Set batch settings
option batch abort
option confirm off
# Connect
open sftp://user:password@sftp.server.com -hostkey="ssh-rsa 2048 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff"
# Change remote and local directories
lcd "M:\SSIS\eSchoolPlus to Clever\Output"
# Transfer files
put -nopreservetime -nopermissions -transfer=ascii file1.csv
put -nopreservetime -nopermissions -transfer=ascii file2.csv
put -nopreservetime -nopermissions -transfer=ascii file3.csv
put -nopreservetime -nopermissions -transfer=ascii file4.csv
put -nopreservetime -nopermissions -transfer=ascii file5.csv
close
exit
选项取决于put
远程服务器如何为我碰巧抓取的脚本工作。 get
工作原理差不多。
然后您使用执行流程任务。可执行文件是C:\Program Files (x86)\WinSCP\WinSCP.exe
,我使用的参数是:
-console -script="X:\Path\To\Script\WinSCPScript.txt" -xmllog="X:\Path\To\Script\WinSCP-!S-!Y-!M-!D-!T.log" -xmlgroups`
这会创建仅包含 WinSCP 信息的每日日志。XML 日志比旧的日志格式 IMO 更具可读性和实用性,后者包含大量主要是调试信息。
您还可以使用带有执行脚本任务的WinSCP .NET 库,但这显然需要付出更多的努力。 然而,他们确实有一个 HOWTO。
是的 - 您将使用文件系统任务并将操作设置为复制目录(在 Microsoft 使用 Win 95 更改它之前,文件夹被称为目录)。您可以在选择目标文件夹的目标连接中更改名称。如果需要,您可以使用表达式添加日期。
https://msdn.microsoft.com/en-us/ms140185.aspx
如果您需要,这里有一些很好的分步说明,因为 Microsoft 给出了模糊的描述,没有示例: