보관 작업 속도를 높이고 싶고 일반적으로 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
.
--create
tar 아카이브를 만듭니다.
--format=posix
POSIX 형식의 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 128M
128MB 데이터 블록을 명령에 전달합니다.
"..."
실행하라는 명령
|
stdout을 다음 명령으로 파이프
pv
데이터가 얼마나 빨리 전송되는지 보여줍니다.
> $TARGET/$FILENAME
표준 출력을 $TARGET/$FILENAME으로 리디렉션
GNU Parallel은 각 128MB 블록에 대해 다음 명령을 시작합니다.
xz
명령xz
-9
압축 수준 9
--check=sha256
비트 오류(예: 결함이 있는 디스크)를 포착할 수 있도록 출력에 무결성 검사를 포함합니다.
|
stdout을 다음 명령으로 파이프
gpg
GNU 개인 정보 보호 명령
--encrypt
stdin에서 데이터 암호화
--recipient $RECIPIENT
$RECIPIENT 키를 사용하여 암호화
;
명령 구분 기호
echo bLoCk EnD
인쇄 블록 끝