rsync domyślnie porównuje tylko metadane plików.
rsync -n -a -i --delete source/ target/
wyjaśnienie:
-n
nie kopiuj ani nie usuwaj <- JEST WAŻNE !! 1
-a
porównaj wszystkie metadane pliku, takie jak znacznik czasu i atrybuty
-i
wydrukuj jeden wiersz informacji na plik
--delete
zgłaszaj także pliki, które nie są źródłowe
Uwaga: ważne jest, aby dodać nazwy katalogów ukośnikiem. to jest rsync.
jeśli chcesz również zobaczyć linie drukowane dla plików, które są identyczne, podaj -i
dwa razy
rsync -n -a -ii --delete source/ target/
przykładowe dane wyjściowe:
*deleting removedfile (file in target but not in source)
.d..t...... ./ (directory with different timestamp)
>f.st...... modifiedfile (file with different size and timestamp)
>f+++++++++ newfile (file in source but not in target)
.f samefile (file that has same metadata. only with -ii)
pamiętaj, że rsync porównuje tylko metadane. oznacza to, że jeśli zawartość pliku ulegnie zmianie, ale metadane pozostaną takie same, to rsync zgłosi, że plik jest taki sam. jest to mało prawdopodobny scenariusz. więc albo ufaj, że gdy metadane są takie same, to dane są takie same, albo musisz porównywać dane pliku krok po kroku.
bonus: aby uzyskać informacje o postępie, zobacz tutaj: Oszacować czas lub pracę do ukończenia dla rsync?
source/
itarget/
są również bardzo ważne! (Bez nich*deleting
, ale pojawiły się tylko pliki w źródle. Cięcia można łatwo przypadkowo zapomnieć, a następnie uzyskać wiarygodny, ale zły wynik.Użyj opcji
-q
(--brief
) zdiff -r
(diff -qr
). Zeinfo
strony GNUdiff
:Nie będzie to porównywać linia po linii, ale raczej plik jako całość, co znacznie przyspieszy procesor (czego „szukasz”).
źródło
Oto szybki skrypt Pythona, który sprawdzi, czy nazwy plików, mtimes i rozmiary plików są takie same:
źródło
Jeśli potrzebujesz tylko wiedzieć, czy pliki z dwóch gałęzi systemu plików są różne (bez przeglądania plików wewnątrz), możesz zrobić coś takiego:
HTH
źródło
Oparty na skrypcie Chrisa Downa, ten skrypt jest trochę bardziej „wizualny”. Nazywając ją z dwoma argumentami
folder1
ifolder2
to idzie pierwszy folder i dla każdego pliku wyszukuje odpowiedni plik w drugim folderze. Jeśli zostanie znaleziona, ścieżka względna zostanie wydrukowana na zielono, jeśli mają inny zmodyfikowany czas lub rozmiar, zostanie wydrukowana na żółto, a jeśli nie zostanie znaleziona, zostanie wydrukowana na czerwono.Pamiętaj, że nie jest to wystarczające, aby zdecydować, czy dwa foldery są takie same, musisz to zrobić w obie strony, aby się upewnić. W praktyce, jeśli chcesz tylko wiedzieć, czy foldery są takie same , skrypt Chrisa jest lepszy. Jeśli chcesz wiedzieć, co brakuje lub różni się z jednego folderu do drugiego , mój skrypt Ci to powie.
UWAGA: trzeba będzie zainstalowany termcolor,
pip install termcolor
.źródło
Jeśli chcesz porównać tylko strukturę i podstawowe informacje o plikach, możesz spróbować czegoś takiego:
Nie testowałem tego, więc wszelkie zmiany są mile widziane :)
źródło
<()
ma swoje własne środowisko. Edytowane.