.lzo 파일을 병렬로 추출한 다음 원본 .lzo 파일을 삭제합니다.

.lzo 파일을 병렬로 추출한 다음 원본 .lzo 파일을 삭제합니다.

그래서 해당 폴더 .lzo에 있는 파일의 /test01/primary압축을 풀고 모든 파일을 삭제해야 합니다. .lzo폴더에서도 동일한 작업을 수행해야 합니다 . 두 폴더에 약 150개의 파일이 있으므로 총 300개의 파일이 있습니다./test02/secondary.lzo

명령줄에서 다음과 같이 실행하여 하나의 파일을 압축 해제합니다. lzop -d file_name.lzo
모든 파일의 압축을 풀고 두 폴더에서 모든 파일을 삭제하는 가장 빠른 방법은 무엇입니까? 나는 다음 코드를 생각해 냈습니다..lzo.lzo

#!/bin/bash

set -e

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

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

.lzo파일의 압축을 동시에 풀고 .lzo두 폴더의 모든 파일을 동시에 삭제하여 프로세스 속도를 높일 수도 있습니다. 더 좋은 방법이 있나요?

답변1

매뉴얼 페이지에 따르면:

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

그래서 당신은 간단히 실행할 수 있습니다

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

lzo추출 성공 후 즉시 각 파일을 삭제하십시오.
lzop단일 스레드이므로 병렬 처리를 원할 경우 다음을 사용할 수 있습니다 gnu parallel.

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

답변2

GNU Parallel은 GNU Parallel에 할당된 순서대로 작업을 생성합니다. 따라서 $PRIMARY 파일을 먼저 나열한 다음 $SECONDARY 파일을 나열하면 $PRIMARY 파일이 먼저 처리됩니다.

~하지 않는 한 --shuf주어진. --shuf매개변수를 실행하기 전에 섞습니다. 매번 $PRIMARY 파일을 받은 다음 $SECONDARY 파일을 받을 수는 없지만 적어도 순서는 무작위입니다.

관련 정보