대용량 백업 폴더를 tar, 압축 및 암호화하려고 하는데 gpg가 단일 스레드라고 생각하기 때문에 프로세스가 느립니다. 나는 루트 폴더를 분할하기 위해 분할을 사용하려고 시도하여 하나의 큰 타르 볼을 암호화하지 않고 많은 작업을 수행했습니다.
이것이 가능합니까, 아니면 제가 뭔가 잘못하고 있습니까?
tar -I pigz -cf - source \
| gpg -c -o destination --passphrase-file xyz --batch --no-tty --cipher-algo AES256 --compress-algo none --no-options - 2 \
| split --additional-suffix=.tar.part -b 1G - "backup-test" >>/log.out
답변1
상자
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
짐 등에서 꺼내다
cat $TARGET/$FILENAME |
parallel --pipe --recend 'bLoCk EnD\n' -N1 --keep-order --rrs 'gpg --decrypt | xz -d' |
tar tv
-N1
한 번에 하나의 레코드를 통과하는지 확인해야 합니다. GnuPG는 여러 병합 레코드의 암호 해독을 지원하지 않습니다.
답변2
Ole님의 제안에 감사드립니다. 추가 조사에 따르면 병목 현상은 Amazon S3 지연 로딩 때문인 것으로 나타났습니다. 스냅샷에서 ebs 볼륨을 연결했습니다. 이것은 여전히 매우 느립니다. 우리는 속도를 높이기 위해 fio를 사용했습니다.
echo "지금 파일 초기화가 시작됩니다: date
" FILES=$(ls -d /mnt/database/files/database_*) echo $FILES
for f in $FILES do echo "Reading file $f" # 이렇게 하면 모든 출력이 중지되고 프로세스가 계속 진행됩니다. sudo fio --opendir="$f" --rw=read --bs=128k --iolength=32 --ioengine=libaio --direct=1 --name="$f" --openfiles=1000 > / 개발/널2>&1 &
완벽한