시간 적응형 압축 도구

시간 적응형 압축 도구

큰 파일을 원격 서버로 복사하는 시나리오에 대해 질문하고 있습니다.

가장 간단한 경우는 다음과 같습니다.

tar c myfile | ssh myserver tar x

네트워크 연결이 빠르면 모든 것이 정상입니다.

느린 네트워크에서는 그렇습니다

tar c myfile | bzip2 -1 | ssh myserver tar xj

-- CPU 시간을 희생하여 전송을 더 빠르게 만듭니다.

물론 압축률을 가지고 놀 수 있으며 일반적으로 CPU가 너무 바쁘지 않고 네트워크가 포화되지 않도록 올바른 압축률을 추측하려고 합니다.

bzip2/ xz/... 출력 버퍼가 사용 중인 동안 가능한 한 많이 압축하도록 지시하는 압축 유틸리티나 압축 플래그가 있습니까 ?

답변1

zstd --adapt

그만큼zstd압축 유틸리티적응형 압축을 켜는 옵션이 있습니다(이 옵션은 zstdv1.3.6에 추가되었습니다). 이렇게 하면 "현재 인식된 I/O 조건"에 맞게 압축이 조정됩니다.

zstd자세한 내용은 설명서를 참조하세요 .

전체 파이프라인은 다음과 같습니다.

tar -c -f - source_directory |
zstd --adapt |
ssh user@server 'cd /someplace && { zstd -d | tar -x -f -;}'

또는

tar -c -f - source_directory |
zstd --adapt |
ssh user@server 'zstd -d | tar -x -C /someplace -f -'

-v파이프라인의 첫 번째 항목에 추가하면 zstd다음과 같은 진행률 표시 줄이 표시됩니다.

(L7) Buffered :  32 MB - Consumed : 192 MB - Compressed :  72 MB => 37.50%

여기서 는 (L7)압축 수준을 나타냅니다. 적당히 많은 양의 데이터의 경우 시간이 지남에 따라 변동할 것으로 예상할 수 있으며 이는 zstd실제로 I/O 조건(그리고 아마도 데이터 자체에도 적용)에 적응하고 있음을 보여줍니다.

관련 정보