Aby zsynchronizować duże pliki lub urządzenia blokowe o małych do średnich różnicach, możesz wykonać zwykłą kopię lub użyć bdsync , rsync absolutnie nie nadaje się do tego konkretnego przypadku *.
bdsync
pracował dla mnie, wydaje się wystarczająco dojrzały, jego historia błędów jest zachęcająca (drobne problemy, szybkie rozwiązanie). W moich testach jego prędkość była bliska teoretycznego maksimum, jakie można uzyskać ** (tzn. Można zsynchronizować czas potrzebny na odczyt pliku). Wreszcie jest open source i nic nie kosztuje.
bdsync
odczytuje pliki z obu hostów i wymienia sumy kontrolne, aby je porównać i wykryć różnice. Wszystko to jednocześnie . W końcu tworzy skompresowany plik łaty na hoście źródłowym. Następnie przenieś ten plik do hosta docelowego i uruchom bdsync po raz drugi, aby załatać plik docelowy.
W przypadku korzystania z dość szybkiego łącza (np. 100 Mb / s Ethernet) i plików z małymi różnicami (jak to najczęściej ma miejsce na dyskach VM), skraca czas synchronizacji do czasu potrzebnego do odczytania pliku. W przypadku powolnego linku potrzebujesz trochę więcej czasu, ponieważ musisz skopiować skompresowane zmiany z jednego hosta na drugi (wydaje się, że możesz zaoszczędzić czas stosując dobrą sztuczkę, ale nie przetestowałem).
*: rsync jest bardzo nieefektywny w przypadku dużych plików. Nawet z opcją --inplace najpierw najpierw odczyta cały plik na hoście docelowym, PO ZATRZYMANIU zacznie czytać plik na hoście źródłowym i w końcu prześle różnice (po prostu uruchom dstat lub podobny podczas rsync i obserwuj). Powoduje to, że nawet w przypadku plików z niewielkimi różnicami potrzeba około dwukrotnie więcej czasu na odczytanie pliku w celu jego synchronizacji.
**: Przy założeniu, że nie ma innego sposobu, aby powiedzieć, które części plików uległy zmianie. Migawki LVM używają map bitowych do rejestrowania zmienionych bloków, dzięki czemu mogą być one wyjątkowo szybsze ( plik Readme lvmsync zawiera więcej informacji).