Уютный скрипт или просто unrar -kb
Сам Unrar предоставляет опцию (-kb
) для хранения поврежденных (или неполных) извлеченных файлов.
Здесь следует обратить внимание на код выхода (3), который, в отличие от 0, указывает на наличие ошибки 8-)
.
Таким образом, вы можете просто создать сценарий, пытающийся извлечь файл, пока он не удастся (код выхода 0).
Читая его справку по man unrar
(давать пару человек в день не вредно), вы можете заметить, по крайней мере, пару других опций, полезных для скрипта, а именно -o+
и -inul
для принудительной перезаписи файла (s) и подавить вывод.
Если скрипт называется go.sh
вы можете сделать его исполняемым (chmod u+x ./go.sh
) и затем выполнить ./go.sh Myfile.part01.rar
. Обратите внимание, что вы можете изменить значения времени ожидания и максимального количества разрешенных итераций.
#!/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"
Примечание: как недостаток он будет перезаписывать каждый раз файл ... но это было то, что вы делали с winrar тоже ... Хорошо, что вероятность того, что файл находится в каком-то буфере кэша, достаточно высока, и он не будет перезаписываться каждый раз ...
Если вы сможете найти версию unrar (или другую программу, например, 7z
...), которая продолжает извлечение, она будет более эффективной без перезаписи.