Jeśli zestaw plików (po kilka GB każdy) i każdy zmienia się nieznacznie każdego dnia (w losowych miejscach, nie tylko informacje dołączane na końcu), jak można je skutecznie skopiować? Mam na myśli w tym sensie, że tylko zmienione części są aktualizowane, a nie całe pliki. Oznaczałoby to różnicę między kopiowaniem niektórych Kb tu i tam lub niektórych GB.
9
diff
, że to zrobidiff
może być w stanie zgłosić różnice, ale tutaj problemem jest skopiowanie małych różnic.rsync
lepiejOdpowiedzi:
Program rsync właśnie to robi. Ze strony podręcznika:
źródło
rsync
porównuje fragmenty plików za pomocą ruchomych sum kontrolnych.rsync -av --progress --partial --inplace arch-test1.qcow2.bak arch-test1.qcow2
Prawdopodobnie potrzebujesz nowoczesnego programu do tworzenia kopii zapasowych. Sprawdź BorgBackup .
Spowoduje to utworzenie wielu kopii zapasowych każdej wersji dużego pliku, ale będzie współużytkować wspólną zawartość między różnymi wersjami, więc całkowite miejsce wykorzystane dla danej wersji dużego pliku będzie tylko nieznacznie większe niż łączne miejsce na dysku dla pojedynczej wersji wersja, przy założeniu, że różne wersje różnią się tylko nieznacznie.
źródło
Jeśli jesteś w jakikolwiek sposób ograniczony przez IO, użyj systemu plików takiego jak BTRFS lub ZFS, który bezpośrednio obsługuje przyrostowe kopie zapasowe bez konieczności znajdowania różnic w plikach, takich jak to,
rsync
co trzeba zrobić.Używanie
rsync
będzie powolne i bardzo intensywne we / wy.Ponieważ jeśli jakakolwiek aplikacja zapisuje zmiany w plikach, jest w jakikolwiek sposób ograniczona przez IO, użycie
rsync
spowoduje odebranie znacznych cykli We / Wy od aplikacji, to właśnie dlatego pliki istnieją. A jeśli proces tworzenia kopii zapasowej lub system jest ograniczonyrsync
do operacji we / wy, zabierze cykle we / wy od dostępnej przepustowości.Tylko Google „rsync jest wolny”. Na przykład: rsync działa bardzo wolno (współczynnik 8 do 10) w porównaniu do cp podczas kopiowania plików z udziału nfs do lokalnego katalogu
źródło