2014-03-26 4 views
0

모든 tar 파일을 포함하는 ftp 서버가 있는데, 그 tar 파일은 500MB 이상으로 크며 너무 많습니다. 500MB 이상이되는 여러 파일을 포함하는 TAR의 단일 파일Python : FTP에서 TAR로 단일 파일 가져 오기

필자의 초기 아이디어는 각 tar 파일을 다운로드하고 필요한 단일 파일을 얻는 것이지만 비효율적 인 것으로 보입니다.

저는 Python을 프로그래밍 언어로 사용하고 있습니다.

+1

파일을 보유하고있는 tar 파일을 모르는 경우 파일을 tar 파일에 링크하는 색인을 작성하지 않으면 다른 해결책이 없습니다. 파일을 찾을 때까지 다운로드하지 않고 서버에서 압축을 풀어 시간을 절약 할 수 있습니다. . . – PyNEwbie

+0

나는 첫 번째가 (ftp) 서버가 이력서 다운로드 (HTTP Range 헤더와 같은 것)를 지원할 필요가 있다고 생각한다. –

+0

@PyNEwbie, 각 TAR에는 필자가 필요로하는 파일과 동일한 파일이 있습니다. – lexsanjose

답변

0

이 답변은 파이썬에만 국한된 문제가 아니기 때문에 파이썬에만 국한되지 않습니다. 이론적으로는 데이터가있는 곳의 Tar 파일 부분을 읽을 수 있습니다. FTP로 (그리고 pythons ftplib로) 이것은 파일의 시작 위치를 지정하기 위해 REST 명령을 먼저 수행 한 다음 RETR을 사용하여 데이터 다운로드를 시작하고 필요한 데이터 양을 얻은 후에 데이터 연결.

그러나 Tar는 중앙 색인이없는 파일 형식입니다 (예 : Tar의 각 파일에는 이름, 크기 및 기타 정보가있는 작은 헤더가 접두어로 붙습니다. 따라서 특정 파일을 얻으려면 첫 번째 헤더를 읽고 일치하는 파일인지 확인하고 그렇지 않은 경우 원하지 않는 파일의 크기를 건너 뛰고 다음 파일로 시도하십시오. Tar에있는 작은 파일이 많을 경우 전체 파일을 다운로드하는 것보다 효과적이지 않을 것입니다 (또는 최소한 관련 부분까지 다운로드 - 다운로드하는 동안 파일을 구문 분석 할 수 있습니다). 왜냐하면 각 읽기에 대한 이러한 새로운 데이터 연결이 많은 오버 헤드를 야기하기 때문입니다. 그러나 Tar에 대용량 파일이있는 경우이 방법이 유용 할 수 있습니다.

그러나 TAR (*.tar)이 아니고 TGZ (*.tgz 또는 *.tar.gz) 파일 인 경우 운이별로 없습니다. 이것들은 압축 된 Tar 파일이며 당신이 가지고있는 모든 것을 압축 할 필요가있는 파일의 일부분을 얻습니다. 그래서이 경우에는 파일을 다운로드하거나 적어도 관련 부분까지 모든 것을 다운로드하는 방법이 없습니다.

+0

감사합니다. 가장 좋은 방법은 TAR 파일을 다운로드하는 것입니다. – lexsanjose

관련 문제