Jak najlepiej porównać ogromne drzewa katalogów


5

Jak mogę porównać drzewa katalogów o dużych rozmiarach?

Myślę, że darmowe narzędzie do tworzenia migawki struktury systemu plików (lista plików i katalogów, ich rozmiar i znaczniki czasu) byłoby idealne, więc mogłem porównać migawkę z inną zrobioną później.

Treecomp byłby do tego świetny, ale z ogromnym drzewem (mam na myśli naprawdę ogromne!) Ulega awarii, ponieważ próbuje utrzymać go w pamięci (4 GB pamięci nie wystarcza) ...

Obejrzałem ten problem, dzieląc migawki na części i porównując je. Ale to nużące, a problem można z pewnością rozwiązać lepiej.

Czy istnieje inne bezpłatne (najlepsze również oprogramowanie typu open source), które mogę wypróbować? Czy jest jakiś inny sposób, aby to zrobić, czego nie widzę?

System operacyjny może być Linux lub Windows.


Czy ktoś ma dobry odpowiednik wiersza poleceń dla systemu Linux? Rzuciłem własny z find i sha1sum, ale myślę, że to uzasadnia program pierwszej klasy.
Peter Lyons,

Beyond Compare 3? Ile plików i folderów mówimy? Jak duży to jest dysk?
Richie086,

W przeszłości robiłem zrzut katalogu do pliku, a następnie porównywałem pliki z programem ad-hoc.
Daniel R Hicks

Odpowiedzi:


2

Postaram się nieco rozwinąć, jak to zrobić w Total Commander (mam nadzieję, że zrozumiałem, co chcesz zrobić).

  • zainstaluj wtyczkę modułu DiskDir (umieszczam bezpośredni link do wtyczki, jeśli wolisz, możesz przejść do strony wtyczek i poszukać wtyczki DiskDir
  • po zainstalowaniu wtyczki „spakuj” katalog, w którym chcesz śledzić zmiany za pomocą Alt + F5 i wybierz „lst” z rozwijanej listy w części Packer okna dialogowego; stworzy to „pakiet”, do którego można wejść naciskając klawisz enter, tak jak gdybyś wszedł do katalogu i wyświetlił pełną zawartość katalogu
  • porównując wyniki, przejdź do oryginalnego katalogu w lewym okienku i wprowadź żądaną migawkę w prawym okienku
  • użyj funkcji „Synchronize Dirs”, znajdującej się w menu Command
  • w oknie Synchronizuj katalogi odznacz porównanie według zawartości, zaznacz Subdirs i Ignore date (lub nie, jeśli zmiana daty jest ważna) i uruchom porównanie
  • okno pokaże pliki, które są równe (w tym przypadku nie według zawartości, tylko według rozmiaru), pliki, które są różne i pliki brakuje po lewej / prawej stronie

Ponieważ migawka jest zwykłym plikiem tekstowym i nie porównujesz zawartości, powinna być szybka, ale nigdy nie użyłem jej do naprawdę dużego katalogu.

Jest to przydatne, jeśli nie tworzysz kopii zapasowych, a chcesz jedynie zrobić migawkę zawartości katalogu w pewnym momencie. Jeśli wykonujesz kopie zapasowe, możesz użyć tego samego narzędzia (Synchronizacja katalogów), aby porównać również zawartość.

Istnieje również rozszerzona wersja wtyczki DiskDir, link do pobrania znajduje się w pierwszym poście. Ta wersja umożliwia wyświetlanie pakietów (takich jak zip, 7z ...) jako katalogów w migawce. Wydłużyłoby to oczywiście czas na zrobienie migawki.


+1 za TC (choć nie za darmo :)

5

możesz po prostu użyć w terminalu

du -a

Spowoduje to zwrócenie wszystkich plików we wszystkich podfolderach, w tym także tych rozmiarów, a następnie porównanie plików

Aby zapisać dane w pliku tekstowym

du -a > dump.txt

Następnie możesz po prostu użyć czegoś takiego jak diff do porównania plików

Dotyczy to systemu Linux: D


Użyłem tego tylko do porównania kopii ogromnych katalogów renderowania z dużą ilością podkatalogów na moim komputerze Mac. FileMerge był całkowicie zdławiony, dopóki nie nakarmiłem go zrzutami du -adrzew katalogów. Wystarczy uruchomić dane wyjściowe, sedaby zmienić dwie nazwy katalogu głównego na ten sam ciąg.
rebusB

2

Wcześniej używałem skrótów i różnic MD5 do porównywania drzew. Jest wolny, ale znajdzie zmienione pliki w przypadkach, w których daty nie są wiarygodne. Jest również przenośny, dzięki czemu można przesyłać indeks zamiast porównywać pliki przez sieć.

find /path/to/check -type f | xargs md5sum > after.txt

diff before.txt after.txt > diffs.txt

1
Dobra odpowiedź, ale unikałbym md5 w systemie plików o rozmiarze tutaj omawianym.
DaveParillo

1
Dla kogoś, kto próbuje zrobić coś podobnego na komputerze z systemem Windows (2008 / Vista i nowszym), możesz użyć następującego polecenia: forfiles / PC: \ Your \ Path \ Here / s / C "cmd / c rhash --simple @file" > C: \ OutputOfHashes.txt forfiles to wbudowane polecenie z wersji 2008 / Vista. technet.microsoft.com/en-us/library/cc753551%28v=ws.10%29.aspx Po prostu zastąp komendę rhash (narzędzie do generowania skrótów Open Source) wybranym hasherem. rhash.anz.ru
aolszowka

1
Być może rozwiązaniem byłoby narzędzie, które może buforować skróty. Coś takiego jak GIT przeliczy tylko skróty zmienionych plików. Zastanawiam się, czy można używać go w sklepie hash jako źródła porównania ... (Git wykorzystuje SHA1 vs MD5 więc początkowe obliczenia byłaby wyższa, ale utrzymanie byłaby niższa ze względu na funkcje buforowania.)
Chris Nava

1

Możesz po prostu użyć wiersza polecenia, aby zrzucić listę:

DIR /S >Listing1.txt

(jeśli chcesz, możesz dostroić opcje, ale ta podstawowa składnia jest prawdopodobnie wystarczająca)

Aby porównać te dwie listy, użyj dowolnego narzędzia do porównywania plików, takiego jak WinDiff lub CompareIt itp. WikiPedia ma listę takich narzędzi tutaj: http://en.wikipedia.org/wiki/Comparison_of_file_comparison_tools


<sarkazm> Świetna sztuczka </sarkazm>, jeśli powiesz mi, jak porównać wynikowe pliki 2x 10 GB w narzędziu do porównywania plików! Narzędzie do przechowywania informacji w bazie danych może mi pomóc, ale nie jest mi przykro.
jdehaan

Niestety, po ponownym przeczytaniu brzmi to może nieco niegrzecznie. To nie tak miało być. Może to nadal pomóc innym z mniejszą ilością danych bez instalowania dodatkowego oprogramowania w systemie.
jdehaan

Nie ma problemu. Nie zdawałem sobie sprawy, że twoje oferty są tak ogromne i masz rację, że w tym przypadku moja sugestia nie jest odpowiednia. Myślałem, że wspomina o tej metodzie, ponieważ czasami ludzie są zbyt porywani próbując znaleźć najlepsze narzędzie, zapominając o prostych sposobach robienia rzeczy. Ale jak powiedziałeś, w twoim przypadku nie jest to rozwiązanie i będziesz potrzebować innego narzędzia.
ssollinger

1

Tydzień temu zrób pierwszą migawkę:

rsync --archive /the/source/ /var/snapshot1/

Teraz weź drugą migawkę:

rsync --archive /the/source/ /var/snapshot2/

I porównaj je:

rsync --archive --list-only /var/snapshot1/ /var/snapshot2/

Podoba mi się ta odpowiedź, ponieważ: 1. rsync porównuje nazwę pliku, rozmiar i znacznik czasu (tak jak chce OP) oraz 2. Działa zarówno w systemie Windows, jak i Linux (a nawet na dyskach Windows zamontowanych w systemie cifs w systemie Linux).
agtoever

1

Właśnie tego używam do porównywania naprawdę dużych drzew katalogów:

rsync --archive --dry-run --verbose /src/directory/ /dst/directory/

0

Zrobiłem to w Total Commander, używając funkcji synchronizacji katalogu. 1,2 TB danych na dwóch dyskach.


Brzmi dobrze, ale jak porównać stan danych ze stanem sprzed miesiąca. Nie potrzebuję rozwiązania do tworzenia kopii zapasowych, chcę tylko zidentyfikować zmiany z jednego punktu kontrolnego do drugiego. Nie interesują mnie zmiany w plikach, tylko zmiany w strukturze, pliki dodane / usunięte / zmodyfikowane, katalogi utworzone / usunięte / zmodyfikowane. Treść nie ma dla mnie znaczenia.
jdehaan

Funkcja synchronizacji Total Commander pokazuje listę plików nowych lub zmienionych po obu stronach, bez konieczności uruchamiania synchronizacji.

W porządku, ale mam dane tylko raz (dzisiaj). Z drugiej strony (miesiąc wcześniej) potrzebowałbym również danych i nie mam wystarczającej ilości miejsca na kilkadziesiąt TB ... Treecomp ma tę funkcję, ale nie skaluje się dobrze z dużymi drzewami, do 2 TB działa. ,
jdehaan

Muszę sprecyzować, że ograniczeniem nie jest tak naprawdę ilość danych, ale ilość plików / katalogów, ponieważ dane nie są uwzględnione w migawce przez treecomp.
jdehaan


0

Możesz także spróbować:

Drukarka katalogów Karen

Drukarka katalogów Karen może wydrukować nazwę każdego pliku na dysku, wraz z rozmiarem pliku, datą i godziną ostatniej modyfikacji oraz atrybutami (tylko do odczytu, ukryty, system i archiwum)! Teraz listę plików można posortować według nazwy, rozmiaru, daty utworzenia, daty ostatniej modyfikacji lub daty ostatniego dostępu.

Generator listy plików

FLG to darmowy generator list plików. Przeszukuje drzewo katalogów w poszukiwaniu plików o wymaganych kryteriach i tworzy listę w formacie HTML.


Drukarka katalogów Karen to naprawdę miłe narzędzie. Może parsowanie plików wyjściowych za pomocą skryptu Perla może pomóc mi w ich porównaniu, ale byłoby mądre, aby nie używać zbyt dużej ilości pamięci ... Naprawdę nie mogę uwierzyć, że tylko ja mam ten problem ...
jdehaan

Z pewnością nie jesteś jedyny. Czy Twoim problemem jest raczej synchronizacja katalogów? Jeśli tak, mogę polecić bardzo szybkie oprogramowanie SyncBack Freeware pod adresem 2brightsparks.com/assets/software/InfoHesiveViewerEP_Setup.exe .
harrymc

0

Czy próbowałeś Back In Time ?

Jest to narzędzie GNU / Linux, które tworzy migawkę systemu plików za pomocą twardych łączy lub fizycznych kopii plików i katalogów.

Jest bardzo konfigurowalny i ma części demona i GUI, które działają osobno.


0

Próbowałeś połączyć ? Nie mam pojęcia, czy nadaje się do dużych drzew, ale zawsze możesz spróbować :)

Meld to wizualne narzędzie do porównywania i scalania przeznaczone dla programistów. Meld pomaga porównywać pliki, katalogi i projekty z kontrolą wersji. Zapewnia dwukierunkowe i trzykrotne porównanie plików i katalogów oraz obsługuje wiele popularnych systemów kontroli wersji.

Meld pomaga przeglądać zmiany w kodzie i rozumieć łatki. Może nawet pomóc ci dowiedzieć się, co się dzieje podczas łączenia, którego ciągle unikasz.


To bardzo dobre i miłe narzędzie do porównywania, ale nie może zapisać stanu drzewa katalogów (przynajmniej nie w wersji, którą mam) do późniejszego użycia i porównania
jdehaan

0

Możesz sprawdzić Beyond Compare .

Nie jest bezpłatny, ale możesz go przetestować przez 30 dni (dni robocze, a nie dni po instalacji). Być może to wystarczy czasu na wykonanie zadania.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.