我需要从FTP服务器下载一些大文件(每个文件大于30GB)。我正在使用pythonstandardlib中的ftplib,但是有一些缺陷:如果我下载了一个大文件,那么如果文件完成了,我就不能再使用连接了。之后我收到一个EOF错误,所以连接被关闭(由于超时?)对于每个后续文件,我都会得到一个错误421。在
从我读到的,有两个联系。数据和控制通道,其中数据通道似乎工作正常(我可以完全下载文件),但同时控制通道超时。 我还读到ftplib(和其他pythonftp库)不适合大文件,可能只支持大约1GB的文件。 这里有一个与此主题类似的问题:How to download big file in python via ftp (with monitoring & reconnect)?这不太一样,因为我的文件比较庞大。在
我当前的代码如下:
import ftplib
import tempfile
ftp = ftplib.FTP_TLS()
ftp.connect(host=server, port=port)
ftp.login(user=user, passwd=password)
ftp.prot_p()
ftp.cwd(folder)
for file in ftp.nlst():
fd, local_filename = tempfile.mkstemp()
f = open(fd, "wb")
ftp.retrbinary('RETR %s' % file, callback=f.write, blocksize=8192)
f.close()
是否有任何调整,或其他库,我可以使用,它支持巨大的文件?在
如果您在使用标准FTP时遇到问题,可以尝试使用专门为处理如此大的文件而设计的不同协议。在
存在许多合适的solutions。Rsync可能是一个很好的开始方式。在
相关问题 更多 >
编程相关推荐