Extraia o multipart .rar durante o download

2

digamos que eu tenha um download de um arquivo .rar multipart, um arquivo dentro dele.

Anteriormente, no Windows com o winrar, abri o part01.rar e iniciei a extração. Ele foi extraído até o final da última parte, que já foi baixado, e depois me levou para a próxima parte. Então eu pude assistir ao vídeo, por exemplo, e apertar "repetir" no WinRAR enquanto as próximas partes estavam terminadas.

Existe uma maneira no Ubuntu assim? Eu até preferiria uma solução de linha de comando automática ... como um processo esperando por novos arquivos .rar e então enviando a "repetição" para o outro processo ...

Espero que não seja muito difícil de entender:)

David.

    
por davidbaumann 15.04.2015 / 09:51

2 respostas

1

Um script aconchegante ou simplesmente unrar -kb

O próprio Unrar fornece uma opção ( -kb ) para manter arquivos extraídos (ou incompletos).
O que devemos notar aqui é o código de saída (3) que, diferente de 0, indica a ocorrência de um erro 8-) .
Então você pode simplesmente fazer um script tentando extrair o arquivo até que ele seja bem-sucedido (código de saída 0).

Lendo sua ajuda com man unrar (nunca é prejudicial dar um par de homens por dia), você pode notar pelo menos algumas outras opções úteis para o script, ou seja, -o+ e -inul para forçar a sobrescrita do (s) arquivo (s) e suprimir a saída.

Se o script tiver o nome go.sh , você poderá torná-lo executável ( chmod u+x ./go.sh ) e, em seguida, executar ./go.sh Myfile.part01.rar . Observe que você pode alterar os valores para o tempo de espera e o número máximo de iterações permitidas.

#!/bin/bash
MaxCounter=5       # Max number of iteration before it exits 
TimeToSleep=10m    # Time to sleep between 2 iteractions
COUNTER=0

until [ $COUNTER -gt $MaxCounter  ] 
 do 
   printf "### Attempt $COUNTER on $MaxCounter\t"
   unrar x "$@" -kb -inul -o+ \
     && { printf "\n\n### Extraction completed\n\n ### DONE ###\n\n"; exit 0; }\  
     || echo "### Extraction Not completed"
   let COUNTER+=1  
   sleep $TimeToSleep
 done
printf "\n\n### $MaxCounter iterations reached \n\n ### ERROR ### \n"

Nota: Como desvantagem ele sobrescreverá cada vez que o arquivo ... mas foi o que você estava fazendo com o winrar também ... O bom é que é suficiente a probabilidade de que o arquivo está em algum buffer de cache e ele não será realmente substituído a cada vez ...
Se você conseguir encontrar uma versão do unrar (ou outro programa, por exemplo, 7z ...) que continue a extração, ela será mais eficiente sem sobrescrever.

    
por 29.10.2018 / 19:22
0

O comando unrar para extrair tudo o que é possível e ignorar as peças ausentes em um arquivo RAR multi-parte é:

 unrar x -kb myfile.rar.01

Onde -kb significa "Manter arquivos extraídos".

Isso deve extrair o vídeo até a parte que falta e parar, deixando assim você continua assistindo o vídeo da parte antes.

Infelizmente, não espera por peças perdidas. Uma solução que usa um script para alimentar peças para unrar e aguardar, infelizmente não pode funcionar tão bem, já que Os fluxos FIFO (first-in-first-out) como /dev/stdin não são procuráveis, e é aparentemente que unrar precisa ser capaz de processar o arquivo.

    
por 26.10.2018 / 13:03

Tags