Odziedziczyłem klaster badawczy z ~ 40 TB danych w trzech systemach plików. Dane sięgają prawie 15 lat wstecz i najprawdopodobniej istnieje duża liczba duplikatów, ponieważ badacze kopiują dane z różnych powodów, a następnie po prostu trzymają się kopii.
Wiem o narzędziach do usuwania duplikatów, takich jak fdupes i rmlint. Próbuję znaleźć taki, który będzie działał na tak dużym zestawie danych. Nie dbam o to, czy zaindeksowanie wszystkich danych zajmie tygodnie (a może nawet miesiące) - prawdopodobnie i tak dusię je, aby ułatwić sobie pracę z systemami plików. Ale muszę znaleźć narzędzie, które albo w jakiś sposób będzie super wydajne z pamięcią RAM, albo może przechowywać wszystkie potrzebne dane pośrednie w plikach, a nie w pamięci RAM. Zakładam, że moja pamięć RAM (64 GB) zostanie wyczerpana, jeśli przeszukam wszystkie te dane w jednym zestawie.
Eksperymentuję z fdupes teraz na drzewie o pojemności 900 GB. Zajmuje to 25% czasu, a zużycie pamięci RAM powoli rośnie przez cały czas, teraz wynosi 700 MB.
Lub czy istnieje sposób na skierowanie procesu do użycia pamięci RAM z mapowaniem dysku, aby było o wiele więcej dostępnych i nie wykorzystuje pamięci RAM systemu?
Używam CentOS 6.
źródło
Odpowiedzi:
Tak, to się nazywa dysk wymiany. Prawdopodobnie już go masz. Jeśli martwisz się brakiem pamięci RAM, zwiększanie to dobry początek. Działa automatycznie, więc nie trzeba robić nic specjalnego.
Nie martwiłbym się o fdupes. Wypróbuj, powinien działać bez problemów.
źródło
wyszukiwanie duplikatów na podstawie skrótu działa dobrze i jest bardzo szybkie.
źródło
Napisz szybką aplikację do chodzenia po drzewach, pchając (hash, mtime) => ścieżkę pliku do słownika lub zaznaczając plik do usunięcia, jeśli wpis już istnieje. Hash będzie po prostu MD5 obliczonym dla pierwszych N bajtów. Możesz zrobić kilka różnych przejść, z haszem nad małym N.
Prawdopodobnie możesz to zrobić w mniej niż dwudziestu lub trzydziestu liniach Pythona (używając os.walk ()).
źródło