큰 ".tgz"파일에서 하나의 파일을 추출하려고합니다. 나는 Archive::Tar::Streamed 모듈을 사용하고 있습니다.Perl을 사용하여 거대한 아카이브에서 단일 파일 압축 해제
다음은 샘플 코드입니다.
my $tar2 = Archive::Tar::Streamed->new($filename);
$fil = $tar2->next;
while($fil) {
$_ = $fil->name;
if(m/abc\.txt/g) {
$fil->extract($outpath);
$fil = $tar2->next;
}
}
그러나 이터레이터가 작동하지 않습니다. 다음 파일로 이동하지 않는 아카이브의 첫 번째 파일을 반복하고 있습니다. 누군가 내가 여기에서 한 실수를 말해 줄 수 있습니까 ???
어쩌면 당신은 또한 핵심이며 아카이브 :: Tar'이 지원을 스트리밍의 어떤 종류가 '사용을 참조하십시오 https://metacpan.org/module/Archive::Tar#Archive를 : : Tar-iter-filename-compressed-opt-val –
내 tgz 파일 크기가 8GB 이상이기 때문에 Archive :: Tar를 사용할 수 없습니다. 메모리 문제가 생깁니다. – wesfaith
링크를 확인하셨습니까? "tar 파일을 메모리에 모두로드하지 않고 읽는 iterator 함수를 반환합니다." 그것이 사실인지 모르겠지만 시도해 볼만한 가치가 있습니다 ... –