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:
- 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.