나는이 살펴 보았다 질문 과 이 질문에 ,하지만 그들은 내가보고하고 증상을 해결하지 못하는 것 같습니다.
셀룰러 네트워크를 통해 전송하려는 큰 로그 파일 (약 600MB)이 있습니다. 그것은 단지에 추가되는 로그 파일이기 때문에 그것은 단지 INSERT과 SQLite는 데이터베이스에 실제로 있지만 (이되지 않도록, 수행되는 꽤 과 간단하지만 마지막 4K 페이지를 제외하고 (또는 어쩌면 적은 수의 파일이 매번 동일합니다. 데이터 연결이 측정되므로 변경 사항 (및 체크섬을 전송해야하는 모든 항목) 만 실제로 전송하는 것이 중요합니다.
그러나 미터링되지 않은 연결 (예 : 무료 Wi-Fi 핫스팟)을 통해 테스트를 수행 할 때 속도가 향상되거나 데이터 전송이 줄어들지 않습니다. WiFi 연결 속도가 느린 경우 1MB / s 이하로 전송하는데 거의 20 분이 소요될 것이라고보고했습니다. 빠른 WiFi 연결을 통해 속도는 균일하지만 속도는보고되지 않았으며 두 번째 전송 시도 (두 파일이 동일하므로 더 빨라야 함)에 차이가 있습니다.
사용중인 (민감한 정보를 제거하기 위해 위생 처리) 명령은 다음과 같습니다.
rsync 'ssh -p 9999' --progress LogFile michael@my.host.zzz:/home/michael/logs/LogFile
마지막에 얻는 출력은 다음과 같습니다.
LogFile
640,856,064 100% 21.25MB/s 0:00:28 (xfr$1, to-chk=0/1)
어떤 종류의 속도 향상에 대한 언급이 없습니다.
문제가 다음 중 하나 일 수 있습니다.
- 명령 행 옵션이 없습니다. 그러나 매뉴얼 페이지를 다시 읽으면 델타 전송이 기본적으로 활성화되어있는 것으로 보입니다. 비활성화 할 수있는 옵션 만 표시됩니다.
- 서버가 ssh 만 허용하는 방화벽 뒤에 있기 때문에 ssh (비표준 포트에서도)를 통해 rsync를 사용하고 있습니다. rsync 데몬이 실행되고 있지 않으면 델타 전송이 작동하지 않는다는 것을 명시 적으로 보지 못했습니다. ":"대신 "::"표기법을 사용하려고했지만 매뉴얼 페이지에서 "모듈"이 무엇인지 명확하지 않으며 잘못된 모듈을 지정하기 위해 명령이 거부되었습니다.
나는 다음을 배제했다.
- 로컬 네트워크에서는 델타 전송이 수행되지 않습니다. 인터넷을 통해 전송을 시도하고 있기 때문에 배제
- 체크섬 계산으로 인한 오버 헤드 고속 및 느린 Wi-Fi 연결 에서이 동작을 보았으며 전송 속도가 계산 범위에없는 것으로 보입니다.
rsync --stats
하고 -v -v
더 자세한 통계를 얻을 수도 있습니다. Rsync는 일치하는 데이터와 일치하지 않은 데이터의 양을 알려줍니다.
but with the exception of the last 4k page (or maybe a few) the file is identical each time.
실제로 확인 했습니까cmp
? 아니면 더 나은가xdelta
? 전송 크기를 최소화하려면 이전 버전과 새 버전을 로컬로 유지하십시오. 따라서 rsync 이외의 다른 방법으로 로컬에서 최소 이진 diff를 계산하고 계량 연결을 통해 체크섬을 보내지 않고도 보낼 수 있습니다. 이진 파일 수준 대신 데이터베이스 레코드 수준에서이 작업을 수행하는 것이 derobert가 제안한 것처럼 더 좋습니다.