Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R从Ubuntu中的ftp服务器下载文件_R_Ubuntu_Ftp_Google Cloud Platform_Rstudio Server - Fatal编程技术网

R从Ubuntu中的ftp服务器下载文件

R从Ubuntu中的ftp服务器下载文件,r,ubuntu,ftp,google-cloud-platform,rstudio-server,R,Ubuntu,Ftp,Google Cloud Platform,Rstudio Server,每个人 我正在使用Ubuntu 14.04在谷歌云虚拟机上运行RStudio服务器(请参阅最后的completesessionInfo)。我正在尝试从ftp服务器下载一些文件,第一步是列出服务器中的子目录,我使用的是RCurl包: library(RCurl) getFiles <- function(dirs) { urls <- paste(dirs, "/", sep="") fls <- strsplit(getURL(urls, dirlistonly=TRUE),

每个人

我正在使用Ubuntu 14.04在谷歌云虚拟机上运行RStudio服务器(请参阅最后的complete
sessionInfo
)。我正在尝试从ftp服务器下载一些文件,第一步是列出服务器中的子目录,我使用的是
RCurl
包:

library(RCurl)

getFiles <- function(dirs) {
urls <- paste(dirs, "/", sep="")
fls <- strsplit(getURL(urls, dirlistonly=TRUE), "\r?\n")
ok <- sapply(fls, length) > 0
unlist(mapply(paste, urls[ok], fls[ok], sep="", SIMPLIFY=FALSE),
     use.names=FALSE)
}

dirs <- "ftp://ftp.mtps.gov.br/pdet/microdados/RAIS"
folders <- getFiles(dirs)
我在我的Windows机器上本地运行了相同的代码,运行得非常完美

显然,由于涉及Linux的某些原因,VM无法与ftp服务器建立连接(我做了一些研究,有些人使用
getBinaryURL
而不是
getURL
,但我还没有弄清楚如何将其应用到我的代码中……),有人能给我点提示吗

下面是虚拟机中详细的
sessionInfo

R version 3.3.0 beta (2016-03-30 r70404)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 14.04.4 LTS

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C                   LC_TIME=en_US.UTF-8       
 [4] LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8        LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                  LC_ADDRESS=C              
[10] LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

您是否检查过是否需要使用pasv ftp而不是“活动”?您好,@MarcB。对不起,你能再澄清一点吗?我没有太多处理Linux机器的经验…这是一个ftp协议的东西。标准ftp有用于发送命令的客户端->服务器连接,但接收数据服务器->客户端需要服务器连接到客户端,这在很多情况下是不可能的,因此有“PASV”ftp,它只有客户端->服务器连接。@MarcB,我试图使用命令
quote PASV
检查连接是否为被动连接,但该命令不会返回任何信息,因为连接甚至还没有建立……如果你在谷歌云中运行,赞助商是谁并不重要。非智能阻止列表是非智能阻止列表。是否检查是否需要使用pasv ftp而不是“活动”?您好,@MarcB。对不起,你能再澄清一点吗?我没有太多处理Linux机器的经验…这是一个ftp协议的东西。标准ftp有用于发送命令的客户端->服务器连接,但接收数据服务器->客户端需要服务器连接到客户端,这在很多情况下是不可能的,因此有“PASV”ftp,它只有客户端->服务器连接。@MarcB,我试图使用命令
quote PASV
检查连接是否为被动连接,但该命令不会返回任何信息,因为连接甚至还没有建立……如果你在谷歌云中运行,赞助商是谁并不重要。非智能块列表是非智能块列表。
R version 3.3.0 beta (2016-03-30 r70404)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 14.04.4 LTS

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C                   LC_TIME=en_US.UTF-8       
 [4] LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8        LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                  LC_ADDRESS=C              
[10] LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C