Skrypt do porównywania plików?

Po dawnej awarii systemu i utracie wielu plików, które następnie częściowo odzyskałem, zostało mi mnóstwo plików o nic nie mówiących nazwach typu: f549731352.pdf .
Wśród nich są zarówno pliki faktycznie utracone, a potem odzyskane, jak i te, które nie były utracone i mam je, pod normalnymi nazwami, ciągle na dysku.

Szukam jakiegoś skryptu, który pozwoli mi porównać odzyskane pliki (przechowywane w wydzielonym katalogu) z plikami we wskazanym katalogu na moim dysku i wskaże wśród odzyskanych plików, te, których oryginały (z normalnymi nazwami) posiadam na dysku.

Czy dysponujecie czymś takim?
A może znacie gdzieś w sieci jakąś bazę danych z różnymi pomocnymi skryptami, które można ew. wykorzystać/adaptować?

Nie potrzebujesz do tego żadnych skryptów, wystarczy polecenie diff. Co i jak masz wytłumaczone tutaj, a jak ci nie wystarczy, to pod artykułem masz odnośniki do kilku komend robiących podobne rzeczy. Jak nie chcesz grzebać w konsoli, to w repozytoriach jest do znalezienia kilka nakładek graficznych (np. kdiff3, diffuse czy diffoscope)

diff znam, ale to jest dobre do porównania dwóch plików.
Ja mam ok 1000 anonimowych plików do porównania z kilkoma tysiącami innych plików, rozmieszczonych w ok 10 katalogach. Robiąc to ręcznie za pomocą diff (lub wygodniej, za pomocą opcji dostępnej w doublecmd) potrzebowałbym kilkaset godzin pracy. Dlatego szukam skryptu.

Do takiego celu używam Shreddera. To graficzna nakładka na rmlint. Wyszuka duplikaty nie zwracając uwagi na nazwy, wyłącznie na podstawie CRC. Wyniki są prezentowane w postaci drzewa. Przed wprowadzeniem zmian otrzymane wyniki można zmieniać, wskazując, co ma pozostać, a co nie.
W repozytoriach.


Podany link zaprowadzi do miejsca, gdzie można go porównać z dwoma innymi programami o podobnej funkcji.

@Ksen
Na obrazku oraz na filmiku wygląda to ciekawie, jednak coś mi nie działa.
Stworzyłem testowy katalog, gdzie wrzuciłem kilka plików, w tym kilka zduplikowanych. Dodałem ten katalog i uruchomiłem skanowanie, które jednak nie pokazuje żadnego pliku, a w miejscu wykresu komunikat “nothing found”. Próbowałem testować różne ustawienia (w tym takie, jak na filmiku), ale ciągle to samo.
O czymś zapomniałem?

Edit:
Co ciekawe, konsolowy rmlint działa poprawnie. Już usunąłem nim trochę nadmiarowych plików, choć dobrze byłoby skorzystać z wygodniejszego Shredder’a.

Jest również fdupes (community).

Przypuszczam, że twój shredder błędnie pobiera strumień danych z rmlint. Niestety na stronach producenta nic na ten temat nie ma (a przynajmniej sam tego nie znalazłem) i nie potrafię wskazać, co trzeba by było i gdzie zmienić, żeby zaczął działać poprawnie.

Jeżeli chcesz, możesz to zgłosić:

A czy u Ciebie Shredder obecnie działa poprawnie?

Proszę także innych użytkowników Shredder’a o potwierdzenie, czy u Was obecnie ten soft działa?

Zainstalowałem z ciekawości i Shredder u mnie nie działa. A przynajmniej nie wykrył testowo skopiowanego pdfa na pulpicie. Dla porównania kdiff3 dał mi komunikat, że oba pliki są dwójkowo identyczne. Jak jest w konsoli, nie sprawdzałem.

Sprawdziłem i faktycznie, Shredder nie działa. Przedtem działał.

Z deklaracji @majo wynika, że ma Xfce. Instalacja kdiff3 dociągnie tonę zależności (chyba, że już je ma z powodu innego pakietu KDE).

Z tego, co widzę, @Tomek korzysta z KDE i prawdopodobnie z menadżera plików krusader, gdzie zależnością do porównywania plików jest kdiff3 .

Ja, korzystam z XFCE i menadżera plików doublecmd, gdzie jest wbudowana funkcja do porównywania plików (funkcjonalnie podobna do kdiff3 w krusader ).

@azja, @majo założyłem, że czytelnicy tego wątku używają mózgu i sprawdzają zależności przed instalacją. I tak, zainstalowałem kdiff3 tylko dlatego, że korzystam z KDE. Nie korzystam z krusadera tylko z dolphina, a ten nigdzie nie ma takiej opcji (może po doinstalowaniu odpowiedniej usługi by się pojawiła, ale nie chciało mi się szukać). Zresztą nie korzystam z porównywania plików, póki co ogarniam wszystko umysłem. I wcale nie muszę się wam tłumaczyć, u siebie mogę instalować co chcę :stuck_out_tongue:

@Tomek
Ależ oczywiście, twój sprzęt, to twoje wyłączne królestwo i nikomu nic do tego :slight_smile:

Wracając do meritum:
Udało mi się uruchomić Shredder’a, zmieniając w ustawieniach domyślną jednostkę maksymalnej wartości pliku z Petabyte na Gigabyte (adekwatną do wielkości mojego dysku).

Widzę, że jest tu bardzo przydatna opcja ręcznego korygowania zaznaczania/odznaczania wybranych plików (wybierając prawym klawiszem myszki).
Jednak pomimo ręcznej zmiany oznaczenia dla danego pliku, moja ręczna zmiana nie jest uwzględniana w wygenerowanych ostatecznym skrypcie.
Czy wiecie jak rozwiązać ten problem? (bez ręcznego usuwania/dodawania linii w skrypcie)

Ależ oczywiście @Tomek, nie musisz się tłumaczyć. Więc nie rób tego.
Moja uwaga nie była krytyką i nie chciałem kogokolwiek zaatakować tylko poinformować. Moja uwaga była informacją - zakładam, że nie należy robić (z czysto teoretycznego punktu widzenia) żadnych założeń.

@majo, nie używam, więc spekuluję tylko. Jeżeli jest jakiś problem, to warto spojrzeć na stronę projektu, na forum Manjaro i do plików konfiguracyjnych - czy zmiany, których dokonujesz, są w nich zapisywane. No i oczywiście, uruchomienie programu w terminalu i przyjrzenie się komunikatom.

Za twoją radą zmieniłem z Petabyte na Gigabyte a następnie zamieniłem ich liczbę z 16 na 15, co umożliwiło zapisanie tych ustawień. Z kolei dałem mu zadanie przepatrzenia dwóch kopii katalogów pobranych z /usr
Efekt: https://pastebin.com/raw/7qLVJ87r

Niestety, wygląda na to, że opcja ręcznego korygowania zaznaczania/odznaczania wybranych plików w Shredder, nie działa w podstawowej wersji “master”, z której są robione paczki w Manjaro i w AUR.

Ponoć w wersji “develop” opcja ta działa, ale aby tego użyć, trzeba by było skompilować paczkę ze źródła “develop”, co wykracza poza moją obecną wiedzę, więc poczekam na pojawienie się tej opcji w wersji “master”.

Natomiast zainstalowałem pakiet fslint z AUR, który, jeśli chodzi o wyszukiwanie duplikatów, choć ma znacznie mniej ustawień (przez co jest łatwiejszy w opanowaniu), to daje znacznie większą elastyczność w zaznaczaniu, które pliki-duplikaty należy skasować, a które zostawić.

Opis konkretnego przypadku:
https://distrowatch.com/weekly.php?issue=20191021#qa

Połączenie rsync i fdupes. Nie do końca jest, to rozwiązanie problemu z tego wątku, ale pokazuje sposób myślenia. Bywa, że problem jest rozbudowany lub nietypowy i trzeba zastosować kilka różnych narzędzi, a cały proces rozbić na etapy. Szukanie jednego cudownego narzędzia, które po kliknięciu rozwiąże cały mój kłopot, nie zawsze jest możliwe lub optymalne.