시간 적응형 압축 도구

시간 적응형 압축 도구

대용량 파일을 원격 서버로 복사하는 시나리오에 대해 문의드립니다.

가장 간단한 사례 중 하나는 다음과 같습니다.

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 조건(및 데이터 자체)에 적응하고 있음을 나타냅니다.

관련 정보