我已经阅读了一些关于 sftp with R 的帖子,但无法解决我遇到的问题。有一个不错的改变,我只是没有在正确的地方寻找,如果是这样的话,请为我指出正确的方向。这就是我现在的位置:
> library(RCurl)
> curlVersion()
$age
[1] 3
$version
[1] "7.43.0"
$vesion_num
[1] 469760
$host
[1] "x86_64-apple-darwin15.0"
$features
ipv6 ssl libz ntlm asynchdns spnego largefile ntlm_wb
1 4 8 16 128 256 512 32768
$ssl_version
[1] "SecureTransport"
$ssl_version_num
[1] 0
$libz_version
[1] "1.2.5"
$protocols
[1] "dict" "file" "ftp" "ftps" "gopher" "http" "https" "imap" "imaps" "ldap" "ldaps" "pop3" "pop3s" "rtsp" "smb" "smbs" "smtp" "smtps" "telnet" "tftp"
$ares
[1] ""
$ares_num
[1] 0
$libidn
[1] ""
我立即注意到 sftp 不是我当前版本的 RCurl 所接受的协议,这是我的主要问题。结果,当我运行下面的代码时,出现以下错误:
# Input
protocol <- "sftp"
server <- "00.000.00.00"
userpwd <- "userid:userpass"
tsfrFilename <- 'myfile.txt'
ouptFilename <- 'myfile.txt'
# Run
url <- paste0(protocol, "://", server, tsfrFilename)
data <- getURL(url = url, userpwd = userpwd)
Error in function (type, msg, asError = TRUE) :
Protocol "sftp" not supported or disabled in libcurl
其实我还有第二个问题。我的理解是 getURL 从其他服务器获取数据并将其拉到我的本地计算机,而我想将文件从本地计算机放到服务器上。
总结一下:(1)我可以更新 R 中的 RCurl / libcurl 以支持 sftp,以及(2)如何将文件从本地计算机放入服务器,而不是从服务器获取文件到本地计算机?
谢谢!
我找到了答案,大部分......
http://andrewberls.com/blog/post/adding-sftp-support-to-curl - 按照此链接解决了我的问题。
我已经成功向 cURL 添加了 sftp 支持,但是我现在正在努力更新 RCurl 包以具有相同的...
这次聚会很晚了,但我刚才也遇到了同样的问题。因此,让我帮助自己的未来版本,甚至可能帮助其他一些人。
Windows 10、11、Server 2019 和 Server 2022 默认情况下已安装 cURL。此版本不支持也不会支持 SFTP。
您需要下载另一个 cURL
您需要将此下载的版本作为 PATH 变量中最早的条目之一。只有这样您才能确定您使用的是支持 SFTP 的 cURL。
使用以下示例中的结构上传: curl -k "sftp://83.46.38.23:22/CurlPutTest/" --user "testuser:testpassword" -T "C: est estfile.xml" --ftp-create-dirs
使用以下示例中的结构下载: curl -k "sftp://83.46.38.23:22/CurlPutTest/testfile.xml" --user "testuser:testpassword" -o "C: est estfile.xml" --ftp-create-dirs