我有一个 R 脚本,它使用 RCurl 以 .csv 格式从 QuickBase 中提取数据。目前,当使用 write.table 函数时,我只是将它定向到本地文件夹。我想直接写入我认为使用 SSL 的 FTP 站点。我有一个用户名和密码,并且可以在选择连接类型“FTP - SSL(Explicit AUTH Over TLS)”后使用cyberduck等客户端进行连接。
我试过只使用 ftpUpload 功能,但它拒绝让我建立连接。
任何有关下一步看哪里的帮助或建议表示赞赏。
我知道完成此操作的最佳方法(在 R 中)是包装对系统函数的调用。我个人使用lftp
,它可以很好地处理:
这确实具有特定于硬件的缺点。它并没有很好地包含在 R 中。也就是说,它可以通过利用擅长其工作的工具为您节省大量时间。
LFTP 的包装器可能看起来像下面的函数——这是我在生产中使用的一个变体;我去掉了依赖于更广泛包的日志记录功能。在核心,这就是为我移动文件的原因。
#' lftp wrapper to get/put file(s) from ftp-like sites
#'
#' @param process list, pipeable etl objects
#' @param configuration vector (text), list of
#' arguments to supply after call to lftp
#' @param skip boolean, whether to skip this step (testing)
#'
#' @details wrapper around lftp command line tool
#'
#' @export
#'
ftp <- function(configuration, skip = FALSE) {
if (!skip) {
system2("lftp",
args = configuration)
}
}
包装器的最大部分是configuration
向量。配置向量允许您将任意参数集传递给lftp
,包括完成工作所需的参数。
示例配置向量可能如下所示:
c(
'your.ftp-server.com',
paste("-e", '"put '/path/to/file.csv' -o '/destination/'; exit;"'
)
请注意,您需要小心引用(或者您可以合并shQuote(),但这是一个不同的项目)。
要回答您的具体问题,您可以在 R 中使用它来:
rCurl
lftp
文件发送到目的地