대용량 파일을 원격 서버로 복사하는 시나리오에 대해 문의드립니다.
가장 간단한 사례 중 하나는 다음과 같습니다.
tar c myfile | ssh myserver tar x
네트워크 연결이 빠르면 모든 것이 정상입니다.
느린 네트워크에서는 이렇게 합니다
tar c myfile | bzip2 -1 | ssh myserver tar xj
-- CPU 시간을 희생하여 전송 속도를 높입니다.
물론 압축 비율을 가지고 놀 수 있고 일반적으로 CPU가 너무 바쁘지 않고 네트워크가 포화되지 않도록 올바른 압축 비율을 추측하려고 노력할 수 있습니다.
bzip2
// xz
... 출력 버퍼가 사용 중일 때 가능한 한 많이 압축하도록 지시할 수 있는 압축 유틸리티나 압축 플래그가 있습니까 ?
답변1
zstd --adapt
이것zstd
압축 유틸리티적응형 압축을 켜는 옵션이 있습니다(이 옵션은 zstd
v1.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 조건(및 데이터 자체)에 적응하고 있음을 나타냅니다.