Extrai arquivos do arquivo tar on-line usando apenas sua URL

0

Encontrei um arquivo tar na rede com tamanhos superiores a 50 GB. Eu só preciso extrair pequenas coisas (100MB) desse arquivo tar. Eu descobri que baixar o arquivo inteiro de 50GB por apenas 100MB é um desperdício de tempo e largura de banda.

Então, minha pergunta é sobre qualquer método que eu possa usar para fazer operações no arquivo tar online (com apenas URL) sem precisar baixar o arquivo tar inteiro.

    
por Mohd Shahril 17.01.2018 / 11:52

2 respostas

2

Eu assumo que o protocolo é HTTP. No meu Kubuntu, a ferramenta certa é httpfs2 .

httpfs2 is a FUSE based filesystem for mounting http or https URLS as files in the filesystem. There is no notion of listable directories in http so only a single URL can be mounted. The server must be able to send byte ranges.

Se o URL do arquivo tar em questão for http://ser.ver/bar.tar , faça o seguinte:

mkdir foo
httpfs2 -f http://ser.ver/bar.tar ./foo

Eu usei -f (fique em primeiro plano) por dois motivos:

  1. Se houver algo errado, o processo sai e eu posso ver isso imediatamente.
  2. O processo é impresso no console, por isso é conveniente alternar para outro console de qualquer maneira.

Agora você deve ter ./foo/bar.tar disponível em seu sistema de arquivos. O arquivo é pesquisável e somente leitura. Extraia o que você precisa, depois desmonte (escolha um):

  • fusermount -u ./foo ;
  • Ctrl + C no console onde httpfs2 é executado;
  • killall httpfs2 .

Eu testei essa solução montando o seguinte arquivo ISO:

http://cdimage.ubuntu.com/cdimage/kubuntu/releases/17.10/release/kubuntu-17.10.1-desktop-amd64.iso

e navegando com ark .

O segundo teste foi com um arquivo tar com mais de 30 GB hospedado no servidor Debian na minha LAN. O arquivo foi criado deliberadamente para este teste e prestei atenção a quais arquivos foram adicionados perto do início, quais estão perto do final. Então, em um cliente Kubuntu, usei mc para entrar no arquivo httpfs2 -mounted e copiar um arquivo próximo ao final do arquivo. Demorou um pouco antes que a cópia real fosse iniciada (acho que httpfs2 estava "avançando" para o arquivo escolhido), então foi impecável. Tenho certeza de que todo o arquivo nunca foi enviado.

O processo do servidor foi apache2 . Um teste semelhante com python3 -m http.server 80 falhou na fase de montagem; este servidor era muito simples.

    
por 18.01.2018 / 09:44
0

propriamente você não pode fazer uma coisa dessas.

porque um arquivo arquivado on-line realmente residente em um computador remoto, portanto, se você quiser fazer a extração on-line, isso seria na verdade o host remoto cuja tarefa estava sendo executada, não sua CPU. e para fazer uma coisa dessas, o host remoto deve oferecer essa capacidade de listar ou extrair os arquivos arquivados e, assim, seria mais do que apenas um uso de ftp.

    
por 17.01.2018 / 16:40

Tags