Python:从FTP获取TAR中的单个文件

lexsanjose

我有一个ftp服务器,其中包含我的所有tar文件,这些tar文件最大为500MB +,它们太多了,我需要做的就是从TAR获取单个文件,该TAR包含多个文件,这些文件变为500MB +。

我最初的想法是下载每个tar文件并获取所需的单个文件,但这似乎效率很低。

我正在使用Python作为编程语言。

斯蒂芬·乌尔里希(Steffen Ullrich)

这个答案并非特定于python,因为问题并非特定于python:理论上,您可以读取Tar文件中数据所在的部分。使用FTP(以及pythons ftplib),可以通过以下操作来实现:首先执行REST命令以指定文件中的开始位置,然后执行RETR以开始下载数据,然后在获得所需的数据量后可以关闭数据连接。

但是,Tar是一种没有中央索引的文件格式,例如,Tar中的每个文件都以一个小标题作为前缀,该小标题包含有关名称,大小和其他信息。因此,要获取特定文件,您必须阅读第一个标头,检查它是否为匹配的文件,如果不是,则跳过不需要的文件的大小,然后尝试下一个。由于Tar中有许多较小的文件,因此与下载完整文件(或至少下载相关部分-您可能会在下载时解析文件)相比,效率不高,因为每次读取的所有这些新数据连接都会导致大量开销。但是,如果Tar中有大文件,则可能会起作用。

但是,如果它不是TAR(*.tar)文件,而是TGZ(*.tgz*.tar.gz)文件,那么您将完全不走运这些是压缩的Tar文件,要获取文件的任何部分,都需要解压缩以前的所有文件。因此,在这种情况下,无法下载文件或至少下载所有内容直至相关部分。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章