Aqui está uma ideia básica de como avaliá-los.
Tome um grande tarball do tipo que você costuma trabalhar. Comprima com bzip2, pbzip2, lbzip2. Meça os tempos (relógio de parede) e salve todas as saídas em arquivos diferentes. Isso lhe dará três vezes e três tamanhos de arquivo.
Em seguida, repita todos os três arquivos de saída (ou seja, as saídas de compactação de bzip2, pbzip2, lbzip2) e descompacte cada um com os três utilitários (bzip2, pbzip2 e lbzip2). Isso lhe dará mais nove vezes.
Execute novamente os doze testes em algum perfilador e obtenha um pico de uso de memória (virtual e RSS) para cada um. Mais uma vez, isso produzirá 12 valores. (Se seu Linux está configurado para não comprometer demais, então você está interessado em VSZ. Caso contrário, você se preocupa com RSS).
Crie uma tabela com 12 linhas para estes pontos de dados - col1: 3 tamanhos comprimidos, col2: 3 tempos de compressão / 9 tempos de descompressão, col3: 12 picos de memória - e escolha o que mais lhe convier. Você deve levar em consideração a frequência com que você compacta versus com que frequência você descomprime.
Eu uso o lbzip2-0.23, mas eu o escrevi, então não conta.
Por fim, não importa qual seja a melhor opção para você, sempre salve uma soma de verificação do tarball descompactado , além de verificar seu arquivo salvo antes de declarar o backup "concluído".
FILES=...
OUTDIR=/mnt/archive
BZ2_UTIL=...
(
tar -c -- $FILES \
| tee >(sha256sum >"$OUTDIR"/myfiles.tar.sha256) \
| pv -c -N plain 2>/dev/tty \
| "$BZ2_UTIL" \
| pv -c -N compr 2>/dev/tty \
> "$OUTDIR"/myfiles.tar.bz2
) 2>"$OUTDIR"/myfiles.err
"$BZ2_UTIL" -dc -- "$OUTDIR"/myfiles.tar.bz2 \
| sha256sum -c -- "$OUTDIR"/myfiles.tar.sha256