Eu assumo que o protocolo é HTTP. No meu Kubuntu, a ferramenta certa é httpfs2 .
httpfs2is 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:
- Se houver algo errado, o processo sai e eu posso ver isso imediatamente.
- 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.