@pdo의 대답은 좋지만 버퍼와 압축으로 속도를 높이고 진행률 표시 줄을 추가 할 수 있습니다.
종종 네트워크에 병목 현상이 발생하고 속도가 시간에 따라 변합니다. 따라서 네트워크를 통해 데이터를 보내기 전에 데이터를 버퍼링하는 데 도움이됩니다. 이 작업을 수행하면됩니다 pv
.
또한 일반적으로 적절한 압축 알고리즘으로 속도를 높일 수 있습니다. Gzip (위와 같이)은 빠른 압축 알고리즘이지만 일반적으로 zstandard ( zstd
) (및 높은 압축 비율의 경우 LZMA / LZMA2 ( xz
)는 더 잘 압축되고 동시에 더 빨라집니다.) 새로운 xz 및 zstd에는 이미 내장 된 멀티 코어 지원 기능이 있습니다 코어가 여러 개인 gzip을 사용하려면 pigz를 사용할 수 있습니다.
다음은 네트워크를 통해 진행률 표시 줄, 버퍼링 및 zstandard 압축을 사용하여 데이터를 보내는 예입니다.
tar cf - . | pv -perabs $(du -sk . | cut -f 1)K | zstd -14 --long=31 -T0 | pv -qCB 512M | ssh user@host "cd /wherever && pv -qCB 512M | zstd -cd -T0 --long=31 | tar xf -"
첫 번째 pv
는 진행률 ( p ), 예상 시간 ( e ), 전송률 ( r ), 평균 속도 ( a ), 총 전송 된 바이트 ( b )를 표시하는 것입니다. 전체 크기로 추정 du
하고 크기 옵션 (추가 의 ). 압축 및 버퍼링 전에 진행률이 측정되므로 매우 정확하지는 않지만 여전히 유용합니다.
zstd
압축 설정 ( 14) 과 함께 사용된다 . 이 숫자는 네트워크 및 CPU 속도에 따라 줄이거 나 늘릴 수 있으므로 zstd는 네트워크 속도보다 약간 빠릅니다. Haswell 3.2GHz CPU 14 에 4 개의 코어가 있으면 약 120MB / s의 속도를 제공합니다. 이 예에서는 긴 모드 31 (2GB 창 사용, 많은 RAM이 필요하지만 데이터베이스 덤프 압축과 같은 매우 좋음)이 사용됩니다. T0의 옵션은 코어 수에 스레드의 양을 설정합니다. 롱 모드와 함께이 설정은 많은 메모리를 사용한다는 것을 알고 있어야합니다.
zstd의 문제점은 대부분의 운영 체제가 버전> 1.3.4와 함께 제공되지 않는다는 것입니다. 이 버전은 적절한 멀티 코어 및 긴 지원에 필요합니다. 사용할 수없는 경우 https://github.com/facebook/zstd 에서 바로 컴파일하여 설치할 수 있습니다 make -j4 && sudo make install
. zstd 대신 xz 또는 pigz를 사용할 수도 있습니다. xz는 느리지 만 매우 잘 압축됩니다 (느린 연결보다 양호), pigz / gzip은 빠르지 만 잘 압축되지 않습니다.
pv
그런 다음 다시 버퍼링에 사용됩니다 ( q
조용, C
스플 라이스 모드 없음 [버퍼링에 항상 필요] 및 B
버퍼 크기 설정).
이 예에서, 버퍼는 수신기 측에서도 사용됩니다. 압축 해제 및 하드 디스크 쓰기 속도가 네트워크 속도보다 대부분 시간이 오래 걸리기 때문에이 작업은 종종 필요하지 않지만 일반적으로 해를 끼치 지 않습니다.