tar, xz 및 gpg와 함께 GNU 병렬 처리의 올바른 사용

tar, xz 및 gpg와 함께 GNU 병렬 처리의 올바른 사용

보관 작업 속도를 높이고 싶고 일반적으로 23GiB(블루레이 1개) 백업을 수행합니다.

나는 이것을 찾았다:GnuPG 및 GNU Parallel을 사용하여 대용량 파일 병렬 암호화를 수행하는 방법은 무엇입니까?


나는 이 코드를 전혀 이해하지 못하기 때문에(사용한 적이 없습니다 parallel):

tar --create --format=posix --preserve-permissions --same-owner --directory $BASE/$name --to-stdout . |
    parallel --pipe --recend '' --keep-order --block-size 128M "xz -9 --check=sha256 |
    gpg --encrypt --recipient $RECIPIENT;echo bLoCk EnD" |
    pv > $TARGET/$FILENAME

분석하는데 도움을 주실 수 있는 분 계시다면 여쭤보고 싶습니다.감사해요.

답변1

tar명령을 실행하십시오 tar.

--createtar 아카이브를 만듭니다.

--format=posixPOSIX 형식의 tar 아카이브를 사용하십시오. 즉, POSIX 형식을 지원하는 다른 시스템에서 추출할 수 있습니다.

--preserve-permissions파일에 대해 동일한 권한을 유지하십시오.

--same-owner파일의 동일한 소유자를 유지합니다(루트로 추출하는 경우에만 관련됨).

--directory $BASE/$name$BASE/$name 디렉토리로 변경을 시작하기 전에

--to-stdout파일에 저장하는 대신 출력을 stdout으로 보냅니다.

.전체 디렉토리 압축

|stdout을 다음 명령으로 파이프

parallel평행한

--pipe파이프 모드가 사용되므로 stdin의 입력은 실행 중인 명령에 대한 stdin의 입력으로 제공됩니다(일반 모드인 명령줄 인수 대신).

--recend ''일반적으로 GNU 병렬은 \n으로 분할됩니다. 입력이 텍스트가 아니라 바이너리 데이터이므로 비활성화합니다.

--keep-order두 번째 명령이 먼저 완료되더라도 두 번째 명령의 출력 전에 첫 번째 명령 실행의 출력을 인쇄해야 합니다.

--block-size 128M128MB 데이터 블록을 명령에 전달합니다.

"..."실행하라는 명령

|stdout을 다음 명령으로 파이프

pv데이터가 얼마나 빨리 전송되는지 보여줍니다.

> $TARGET/$FILENAME표준 출력을 $TARGET/$FILENAME으로 리디렉션

GNU Parallel은 각 128MB 블록에 대해 다음 명령을 시작합니다.

xz명령xz

-9압축 수준 9

--check=sha256비트 오류(예: 결함이 있는 디스크)를 포착할 수 있도록 출력에 무결성 검사를 포함합니다.

|stdout을 다음 명령으로 파이프

gpgGNU 개인 정보 보호 명령

--encryptstdin에서 데이터 암호화

--recipient $RECIPIENT$RECIPIENT 키를 사용하여 암호화

;명령 구분 기호

echo bLoCk EnD인쇄 블록 끝

관련 정보