Arquivos .lzo não compactados em paralelo e, em seguida, exclua os arquivos .lzo originais

2

Portanto, eu tenho .lzo arquivos na pasta /test01/primary , e preciso descompactar e excluir todos os arquivos .lzo . A mesma coisa que preciso fazer na pasta /test02/secondary também. Eu terei cerca de 150% de arquivos.lzo em ambas as pastas, totalizando cerca de 300 arquivos.

De uma linha de comando, eu estava executando assim para um arquivo não-compactado lzop -d file_name.lzo
Qual é a maneira mais rápida de descompactar todos os arquivos .lzo e, em seguida, excluir todos os arquivos .lzo das duas pastas. Eu vim com código abaixo.

#!/bin/bash

set -e

export PRIMARY=/test01/primary
export SECONDARY=/test02/secondary

lzop -d $PRIMARY/* & lzop -d $SECONDARY/*
find $PRIMARY $SECONDARY -name '*.lzo' -delete

Pode ser que possamos descompactar os arquivos .lzo em paralelo e, em seguida, excluir todo o arquivo .lzo em ambas as pastas simultaneamente para acelerar o processo. Existe uma maneira melhor?

    
por user1950349 09.10.2015 / 22:05

2 respostas

1

Por página do manual:

   -U, --unlink, --delete
              Delete input files after succesful compression or decompression.

para que você possa simplesmente executar

lzop -dU -- {"$PRIMARY","$SECONDARY"}/*.lzo

para excluir cada arquivo lzo assim que ele for descompactado com êxito.
lzop é single-threaded, portanto, se você quiser um processamento paralelo, poderá usar gnu parallel :

parallel lzop -dU -- ::: {"$PRIMARY","$SECONDARY"}/*.lzo
    
por 10.10.2015 / 12:24
1

O GNU Parallel gera os jobs na ordem em que eles são dados ao GNU Parallel. Portanto, se você listar primeiro os arquivos $ PRIMARY e, em seguida, os arquivos $ SECONDARY, os arquivos $ PRIMARY serão processados primeiro.

A menos que --shuf seja fornecido. --shuf embaralha os argumentos antes de executá-los. Você ainda não obterá um arquivo $ PRIMARY, depois um arquivo $ SECONDARY todas as vezes, mas pelo menos o pedido será aleatório.

    
por 10.10.2015 / 20:40