rsync로 압축 옵션 -z를 수행하면 백업 속도가 빨라집니다.


37

이어 rsync, -z전송하는 동안 파일 데이터를 압축합니다.

올바르게 이해하면 -z전송하기 전에 파일을 압축 한 다음 전송 후 압축을 해제하십시오. 압축 중량 초과로 인해 전송 중 시간이 단축되어 압축 및 압축 해제 시간이됩니까?

질문에 대한 답변은 USB (2.0 또는 3.0)를 통해 외부 HDD로 백업하거나 인터넷을 통해 ssh로 서버에 백업하는지 여부에 달려 있습니까?


압축 파일의 크기가 원본 파일의 크기와 크게 다르지 않은 경우, 이는 상당한 오버 헤드 일 수 있습니다.
heemayl

1
컨텐츠가 이미 압축 형식 (jpeg, mpeg, distro 패키지 등) 인 자료 인 경우 heemayl의 내용을 자세히 설명하면 압축이 훨씬 덜 효과적입니다. 내가주의 사항 man rsync파일 접미사 목록 사실이 있음을 압축되지 않습니다 심지어와가 -z(참조 --skip-compress).
goldilocks

답변:


46

일반적인 질문입니다. 엔드 포인트에서의 압축 및 압축 해제는 링크의 유효 대역폭을 개선합니까?

엔드 포인트에서 압축 및 압축 해제를 수행하는 링크의 유효 (인식 된) 대역은 다음과 같은 기능입니다.

  1. 압축 속도 (CPU 속도)
  2. 네트워크의 실제 대역폭

이 기능은이 3D 그래프로 설명되며 특정 상황에 대해 문의 할 수 있습니다.

여기에 이미지 설명을 입력하십시오

그래프는 http://www.linuxjournal.com/압축 도구 비교 2005 기사에서 시작됩니다 .


1
데이터 유형도 중요한 요소입니다 (목록에서 요소 # 3이 누락 됨). 링크 된 기사는 일반적인 데이터 조합을 사용합니다. 당신은 일반적이지 않을 수 있습니다. 100 % ZIP 파일 (또는 사전 압축 된 데이터)을 동기화하는 경우 압축을 원하지 않을 것입니다. 100 % 텍스트 파일을 동기화하는 경우 네트워크 속도가 빠르고 CPU 속도가 느려도 압축 속도가 더 빠를 수 있습니다. 세 가지 요소를 모두 측정하십시오.
Richard Brightwell

13

연결 속도가 매우 느린 경우 (GPRS 생각) 가능한 한 많이 데이터를 압축하려고합니다. 그렇지 않으면 연결 속도가 느려집니다.

CPU가 매우 느리고 연결이 빠른 경우 (내장 네트워크 장치와 같은) 일반적으로 데이터를 압축하지 않으려는 경우 CPU가 느려집니다.


3

데이터의 압축률과 소스 및 대상의 처리 능력에 따라 다릅니다. 내 경험에 의한 전체 디스크 백업은 원래 크기의 약 30-50 %로 압축되므로 촬영할 가치가 있습니다. 그렇지 않으면 압축에 신경 쓰지 마십시오. 압축률을 테스트 pigz -c <your file> | wc -c하고 반환 된 크기를 원래 크기와 비교하는 것이 좋습니다.


2

예, 연결 속도에 따라 속도가 빨라집니다. 디스크가 데이터를 팽창시키지 않고 데이터를 쓰는 프로세스이기 때문에 USB 백업에만 오버 헤드가 발생합니다. 따라서 그것을 읽고 수축시킨 동일한 기계가 그것을 팽창시키고 써야합니다. Rsync는 여전히 두 가지 프로세스라고 생각하지만 한 프로세스에서 다른 프로세스로 데이터를 전달하는 메모리는 충분히 빠르며 CPU는 압축하는 데 더 많은 시간이 필요합니다 (나중에 동일한 메모리로 읽는 동안) :

압축은 발신자와 수신자가 동기화하고 네트워크 속도가 느릴 때만 도움이됩니다. 예를 들어 로컬 NAS가있는 경우 1Gbit는 이미 충분히 빠를 수 있습니다. 10Gbit는 이미 원시 SATA 속도입니다. 따라서 압축은 연결이 100Mbit 이하인 경우에만 필요하며 압축 된 데이터가 압축 가능한 경우에만 의미가 있습니다.

나는 rsync가 두 대의 컴퓨터에서 실행되지 않고 압축을 건너 뛰지 만 확실하지 않은 것을 알 수 있다고 생각합니다.


1

tl; dr 저속 전송 링크에서는 압축하고 그렇지 않으면 압축하지 마십시오. 다음은 압축 속도 테스트, 대역폭 변환 도구 및 일부 정보에 대한 링크입니다.

압축을 사용 rsync하면 중간 링크가 "충분히 느리다"(즉, 한쪽 끝의 기계가 통신 링크를 포화시킬 정도로 압축 된 데이터 스트림을 빠르게 생성 할 수있는 경우)하는 경우에만 속도가 빨라집니다.

그렇다면 압축을 사용하여 얻을 수있는 가장 느린 링크는 무엇입니까?

다음은 매우 비과학적인 테스트로, gzip데이터를 얼마나 빨리 생성 할 수 있는지, 그리고 일반적으로 네트워크 대량 전송을 압축해야하는지 여부를 나타냅니다.

입력 데이터는 테스트 결과를 크게 변경합니다 . 컴퓨터에서 압축되지 않은 (!) 일반 파일을 사용하고 있습니다.이 파일은 일반적으로 네트워크를 통해 전송되는 데이터 유형을 나타낼 수 있습니다. 사용 /dev/zero(무제한 제로를 생산하는) 제로의 흐름이 매우 쉽게 압축하는 것 같은 오해의 소지 및 사용하는 것 /dev/random반대 이유에 대해 오해의 소지가 될 것이다. 대신 내 $HOME/local디렉토리 의 tar 파일을 사용하는데 여기에는 내에 설치된 소프트웨어가 포함되어 있습니다 $HOME. 파일 자체는 압축되지 않았지만 이진 파일, 작은 압축 파일 및 소스 / 텍스트 파일이 혼합되어 있으며 기본 설정으로 압축하면 gzip64 MiB에서 22 MiB로 67 % 줄어 듭니다.

$ gzip -c local.tar | dd of=/dev/null
43092+4 records in
43093+1 records out
22063854 bytes transferred in 2.819 secs (7825741 bytes/sec)

나는 평균이 무엇인지에 대한 느낌을 얻기 위해이 작업을 몇 번 수행하며 약 7800000 바이트 / 초에 이릅니다.

그런 다음 네트워크 대역폭 계산기 를 사용하여 이것이 무엇으로 변환되는지 확인합니다. 이 특별한 경우에는 "100Mb 이더넷"유선 링크의 용량 미만으로 "VDSL 다운로드"인터넷 업 링크보다 훨씬 빠르며 "802.11 [a / g]"무선 링크보다 약간 빠릅니다. "Bluetooth v3.0"(더 느림)과 "USB 2.0"(더 빠름) 사이.

즉, 압축 속도 보다 빠른 속도로 압축을 사용하는 경우 압축시 파일 전송 속도가 느려질 수 있습니다.

rsync사용하지 않을 수도 있습니다 정확한 로 같은 라이브러리를 gzip압축을 할 수 있지만, 상기 적어도 당신에게 힌트를 조금 줄 것이다.

rsync아시다시피 압축 이상의 기능을 수행하며 실제 속도 증가는 변경된 [비트 수] 파일 만 전송함으로써 발생합니다.

내 경험상, rsync네트워크의 대역폭이 증가함에 따라 (내 위치) 지난 10 년 동안 압축 기능을 사용하는 것이 점점 덜 유익 해졌습니다.

증분 백업을 수행하려면 --link-dest옵션을 조사하는 것이 좋습니다 (이것은 전송되는 것과 관련이 있으며 대상이 대상에 저장되는 방법과는 관련이 없습니다). 또한 SSH를 통해 수행하는 경우 SSH 연결이 이미 압축되어 있으면 압축을 사용하지 않고 위와 같은 이유로 느린 링크를 통해 SSH 연결 (터널 등) 만 압축하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.