Kopiuję wiele plików, które zmieniły się z jednego serwera na drugi za pomocą rsync. Wiem, że mogę skorzystać z tej -n
opcji, aby wykonać próbę rozruchu, dzięki czemu mogę zobaczyć, które pliki zostały zmienione. Czy jest jednak możliwe, aby rsync wydrukował różnicę zawartości pliku, która została zmieniona? Chciałbym zobaczyć, co się dzieje przed zrobieniem kopii? Coś, co mogę zapisać do pliku i zastosować później w diff (1)?
19
rsync --diff
dwa lata później ...rsync nie może tego zrobić natywnie, ale jeśli istnieje możliwość użycia unisona , możesz z niego stworzyć format w stylu diff.
źródło
Aby utworzyć łatkę:
Aby zastosować:
lub użyj automatycznie wygenerowanego skryptu:
Źródła:
źródło
Nie jest to możliwe natywnie, ponieważ rsync dba tylko o różnice binarne między plikami.
Możesz być w stanie napisać skrypt, używając danych wyjściowych rsync. Ale byłoby to hacking.
Uważam jednak, że jest to możliwe w Unison .
źródło
Dlaczego po prostu nie użyć czegoś takiego jak diff (dla plików tekstowych) lub xdelta (dla plików binarnych) do wygenerowania różnic? Dlaczego potrzebujesz konkretnie uzyskać coś z rsync?
źródło
Aby rozwinąć odpowiedź Kyle'a, automatyzuje to proces. Zauważ, że jest całkowicie nieprzetestowany, prawdopodobnie dość delikatny i może usunąć komputer i zabić twojego psa.
źródło
Algorytm rsync działa poprzez porównywanie binarnych fragmentów pliku. Taki diff binarny nie jest przeznaczony do drukowania. Istnieje polecenie o nazwie rdiff, które wykorzystuje algorytm rsync do generowania binarnego pliku różnicowego, ale nie sądzę, aby przydało się to, co opisujesz, jest powszechnie używane do implementacji przyrostowych kopii zapasowych.
źródło