通过R协助自动进行SFTP传输

时间:2018-07-17 13:59:29

标签: r ftp rstudio sftp rcurl

我有一个一直在手动执行的SFTP进程。

注意:我要写的都不是我的实际登录凭证,因此请不要在评论中提出。

我的手动过程看起来像这样。

  1. 打开终端
  2. 输入open ftp://ftp.info.com/jsmith/Up
  3. FTP客户端打开并询问我的用户名和密码
  4. 我输入我的用户名:jsmith
  5. 我输入密码:testpassword123
  6. 我上传了文件

如何使用R自动完成整个过程?我使用什么软件包,脚本将是什么样?

1 个答案:

答案 0 :(得分:0)

如果您使用Windows,则建议使用PuTTY或WinSCP。如果在Linux上,请使用内置的或适合于操作系统的SFTP(请检查aptyum存储库以获取适合您的OS的版本)。我个人使用WinSCP scripts。对于Macintosh,我建议使用CyberDuck

您可以使用system() R函数将这些外部程序用于SFTP / SCP传输。此功能将允许您调用任何任意命令以传递到操作系统。

示例:

system("open sftp://username:password@sftp.example.com/", intern = F)

有关更多选项和示例,请参见?system

您可以使用SSH密钥对进行无密码身份验证,也可以将密码存储为环境变量(并以这种方式传递值),或者理论上您可以通过将密码正确放在SFTP命令中来安全地执行此操作system()内。

system()是唯一的R命令,因此您只需遵循选择的任何SFTP程序的语法即可。如果您的文件名是根据日期在R中动态生成的,那么我将以相同的方式生成WinSCP脚本(将文件名和日期一起传递,就像您在注释中使用paste一样) 。有关命令,选项和WinSCP示例,请参见this