Eu tenho um URL que leva a um arquivo tar de tamanho grande, em torno de 200 GB, preciso extrair uma pasta desse arquivo no meu sistema Linux. Devido ao grande tamanho do arquivo, não quero baixar o arquivo inteiro para o meu sistema Linux. Além disso, não tenho acesso shh ao sistema de origem.
Existe alguma maneira de extrair apenas uma pequena parte do arquivo tar.gz?
Responder1
Para extrair apenas um diretório específico, você precisa saber os nomes exatos dos arquivos. Curingas não funcionam com tar. e o comando será semelhante
curl -s -o - <URL>|tar xz /path/file1 /path/file2 ...
Responder2
O tar
formato não permite endereçar um arquivo (ou diretório) diretamente - isso se deve ao fato de quetmacacoarcebolinhas deveriam ser lidas sequencialmente a partir de uma mídia de backup.
O que você pode fazer, é claro, é interromper o processo após a extração das partes relevantes. Você faria algo como
curl -o - 'http://your/url' | tar -xvz your_filter
Isso fará o download do arquivo começando do início e extrairá as partes relevantes. Assim que tiver tudo o que precisa, você pode interromper o processo para evitar o download do resto.
Dependendo do tipo de acesso que você tem ao servidor de origem, você pode fazer ainda melhor: Você tem PHP sem modo de salvamento? Se sim, você pode extrair o que precisa por meio shell_exec
de amigos.