Linux - uporządkowanie ogromnej ilości danych

0

Mam do uporządkowania ogromne ilości danych - około 50 TB. Pracuję na Linuxie, w grę wchodzą głównie narzędzia konsolowe + skrypty.

co trzeba zrobić:

  • sprawdzenie czy pliki mają duplikaty
  • eliminacja duplikatów
  • jest około 50 000 nienazwanych PDFów - trzeba nazwać te PDFy (przydzielić nazwę), bo aktualna nazwa jest "randomowa" (wygenerowana)
  • uporządkować PDFy według swojej zawartośći, np. do folderu "faktury" dać PDFy z fakturami
  • jest około 100 000 plików JPG - należy nazwać i uporządkować pliki JPG, według zawartości, umieścić w folderach
  • usunięcie plików śmieciowych, około 30% to zwykłe śmieci, np. jakieś fragmenty czegoś-tam
  • nienazwane pliki *.docx, umieścić w folderach i nazwać (kilka tysięcy)
  • w przypadku plików JPG dobrze byłoby sprawdzić daty, ale najgorsze, że nie każdy z nich ma dobrze pokazaną datę (datę zrobienia fotografii lub skanu)
  • najgorsze: wśród tych 100 000 jpgów jest kilkanaście bardzo ważnych fotografii (skanów dokumentów i aktów własności), nie wiem jak to znaleźć, bo szukanie ręczne to jest masakra ;/ , mogą być też w zipach
  • jakieś ogromne ilości zipów - wypadałoby rozpakować i uporządkować te pliki, np. nazwać JPG i umieścić w folderach

ma ktoś jakieś sposoby na pomoc w rozwiązaniu tego problemu?
Ręcznie to będę chyba z pół roku przy tym siedział ;/

Każde narzędzia i sugestie mile widziane

0

Właściwie jedyne co się da zrobić automatycznie to wyszukiwanie duplikatów plików, pozostałe rzeczy wymagałyby sztucznej inteligencji...

Bo jak niby chcesz uporządkować jpgi „według zawartości” (według jakich kryteriów?) albo automatycznie ustalać czy jest „bardzo ważny” czy jest śmieciem?

Ręcznie to będę chyba z pół roku przy tym siedział ;/
Każde narzędzia i sugestie mile widziane

Więcej ludzi.

0
Azarien napisał(a):

Bo jak niby chcesz uporządkować jpgi „według zawartości” (według jakich kryteriów?) albo automatycznie ustalać czy jest „bardzo ważny” czy jest śmieciem?

no właśnie nie wiem, bo jpg to plik w środku ma zawartość jako "binaria"?
tak samo jak weźmiemy PDF - to ten plik to taka mieszanina albo obrazka albo treści (tekstu). PDFy generalnie można "rozpakować", to wtedy jest coś pomiędzy XMLem, JPGem, a HTMLem.
może jakby uporządkować te PDFy na podstawie tego HTMLa, który mają w środku?

wstępny pomysł to taki, że będę szukał po:

  • wielkości, np. faktury będą podobnej wielkości
  • dacie
  • jpg mają w środku czasami "komentarze", może będą podobne komentarze?
  • pliki docx to nie mam zielonego pojęcia, ale może dałoby się jakoś nazwę pliku zbudować z treści nagłówka?
    .docx też się da "rozpakować"
0

no właśnie nie wiem, bo jpg to plik w środku ma zawartość jako "binaria"?

Nie jest problemem rozpoznanie formatu pliku jeśli ma usunięte rozszerzenie - ale chodzi ci o sam typ pliku, czy o odróżnienie co jest na obrazku?

1

W przypadku jpg moze jestes w stanie jakos na danych z Exif bazowac? Co do pdfow, mozesz sie pobawic pythonem i np. pdf-parser (poczytaj o steganografi, ctfach i parsowaniu pdfow - znajdziesz sporo informacji jak rozne rzeczy mozna z pdfow wyciagac) powinienes byc w stanie wyciagnac rzeczy typu tytul etc. Do tego MOZE pdfy z faktuarami maja jakac ceche charakterystyczna (stopka, jakis obrazek, logo, etc.). Czasami tez binwalk -e potrafi rozne cuda z plikow wyciagnac.

0
Azarien napisał(a):

no właśnie nie wiem, bo jpg to plik w środku ma zawartość jako "binaria"?

Nie jest problemem rozpoznanie formatu pliku jeśli ma usunięte rozszerzenie - ale chodzi ci o sam typ pliku, czy o odróżnienie co jest na obrazku?

tzn tak - jak masz dowolny JPG i podejrzysz dowolnym programem, to możesz znaleźć np. opcje : "info, model, date taken". Są też opcje wyszczególnione: color model, DPI, compression.
Często też jest opcja: "embedded comment"

Nazwijmy to meta-dane. I teraz mój pomysł polega na tym, że można byłoby uporządkować te JPG po tych meta-danych. Nie będzie to super uporządkowanie, ale może już coś pomóc. Jakiś skrypt, może Pythonowy....

1

UWAGA: Napierw przy pomocy dd lub od biedy fsarchivera zrób backup danych.

Do pdfów pdfgrep - pozwala na szukanie tekstu więc możesz tutuł wyciągnać(z pewnym przybliżeniem)
Do duplikatów fslint lub fdupes
Do generalnego wyszukiwania tekstu w plikach: https://github.com/ggreer/the_silver_searcher (grep jest zdecydowanie za wolny)
Możesz też użyć sleuth który pogrupuje pliki
Błędnych plików możesz szukać po nagłówkach formatu, ale o ile pamiętam fslint też je jakoś wyszukuje i usuwa.
Jeżeli te dane są używane, to możesz logować co je używa(bo np pdfy mogą być generowane przez jakąś aplikację, a jpg zaczytywane przez inną) i jak już tych logów nazbierasz trochę(np po pół roku), to na ich podstawie znasz kontekst plików więc wiesz jak je sortować i jak nazwać, ale też które są często używane, a które wcale.

Co do reszty to na szybko nic mi do głowy nie przychodzi

0
Wielki Samiec napisał(a):

(...)
Co do reszty to na szybko nic mi do głowy nie przychodzi

dziękuję za narzędzia. Na razie usuwam duplikaty, bo pełno tego jest.

mam pytanie - jak dobrać się do plików MSOFFICE ? Trochę power point ( .pptx , .ppt), Excel (xls,.xlsm,.xlsx) no i pełno worda (doc, docx).
Stosunkowo mało miejsca to zajmuje, ale tam są ważne rzeczy i wypadałoby to jakoś najlepiej uporządkować. Niektóre są podpisane, a inne nie.

1

Kombinowac. Generalnie przeszukac siec pod katem Python + to co chcemy mielic czy Perl + to co chcemy mielic. Dla wielu formatow da sie mniej lub bardziej przerzucic do czegos textowego (narzedzia typu format2txt etc.) wtedy mozesz na biezaco zrzucac do czegos textowego, przeprocesowac i na podstawie wyniku zakwalifikowac odpowiednio oryginalny plik.

0
WhiteLightning napisał(a):

Kombinowac. Generalnie przeszukac siec pod katem Python + to co chcemy mielic czy Perl + to co chcemy mielic. Dla wielu formatow da sie mniej lub bardziej przerzucic do czegos textowego (narzedzia typu format2txt etc.) wtedy mozesz na biezaco zrzucac do czegos textowego, przeprocesowac i na podstawie wyniku zakwalifikowac odpowiednio oryginalny plik.

ok dzięki za rady.

Z fakkturami np. jest coś takiego:

jest sobie w losowym folderze faktura nazwana tak:
/0sd34lfsd/f220530416.pdf
trzeba wyciągnąć z niej dane i nazwać ją tak:

/ROK/MIESIĄC/NAZWISKO_IMIĘ_NUMER_nrFAKTURY.pdf
np.
/2013/MARZEC/KOWALSKI_JAN_001_F123456.pdf

generalnie chodzi, żeby później łatwiej było to znaleźć (odszukać).
Ja mam te rzeczy tak uporządkować, żeby później dało się to łatwo odszukać.
Jeszcze zaznaczę, że te dane nie są w żadnej bazie danych (niestety).

1

Jeżlei te pdfy mają wspólny format treści, to możesz wyszukać wszystkie pdfy, pajpnąć xargsem do pdfgrepa, wyszukać w nim te dane i wywołać mv ${oryginalna nazwa} ${nazwa złożona na podstawie znalezionych danych}.

Jak już masz te dane pogrupowane to żeby można było je łatwo wyszukać możesz użyć git-annex trzymając w jednym miejscu tylko gitannexowe symlinki i repo.
Później z poziomu tego katalogu git-annex pokaże gdzie ten plik jest(a może być nawet zaszyfrowany w chmurze) i w jakiej wersji.

Pliki łordzikowe to jest rak, ale i na to coś pewnie jest.
Niby docx to jest zzipowany xml, ale po rozpakowaniu i ponownym spakowaniu już nie działa bo pakowanie jest jakieś specyficzne.
Ja znam catdoc, ale to będzie zdecydowanie za wolne.

0

ok dziękuję wszystkim, dużo ciekawych sugestii się pojawiło.

jako ciekawostkę podam, że po tym problemie postanowiłem, że wkuwam find na blachę (recytacja man find o 3 w nocy ;-)). Bo w tej chwili to główne narzędzie, z którego korzystam. ;)

Z plikami MSOffice może być problem, ale zobaczy się.

1
  • sprawdzenie czy pliki mają duplikaty
  • eliminacja duplikatów

O ile są całkiem identyczne to prosto to zrealizować

  • jest około 50 000 nienazwanych PDFów - trzeba nazwać te PDFy (przydzielić nazwę), bo aktualna nazwa jest "randomowa" (wygenerowana)

Jeśli pdfy mają jakiś sensowny, spójny format a nazwę można "wyliczyć" na podstawie pliku to można sobie wczytać zawartość i generować nazwę.

  • uporządkować PDFy według swojej zawartośći, np. do folderu "faktury" dać PDFy z fakturami

Jw, jeśli format jest spójny i można jakoś na podstawie danych stwierdzić "co to za dane" to można je tak klasyfikować. Ba, można nawet jakiś topic-modelling wrzucić i klasyfikować dane "tematycznie"! Osobno dokumenty na temat X a osobno Y.

  • jest około 100 000 plików JPG - należy nazwać i uporządkować pliki JPG, według zawartości, umieścić w folderach

Raczej bez szans, chyba że to skany dokumentów, bo wtedy można odpalic OCR i bawić sie znów w klasyfikacje tekstową.

  • usunięcie plików śmieciowych, około 30% to zwykłe śmieci, np. jakieś fragmenty czegoś-tam

Raczej bez szans ;)

  • nienazwane pliki *.docx, umieścić w folderach i nazwać (kilka tysięcy)

Jw dla pdfów, bo to bez znaczenia. Jak odpalisz jakieś apache poi to wczyta dane z dowolnego pliku (txt, doc, pdf etc)

  • najgorsze: wśród tych 100 000 jpgów jest kilkanaście bardzo ważnych fotografii (skanów dokumentów i aktów własności), nie wiem jak to znaleźć, bo szukanie ręczne to jest masakra ;/ , mogą być też w zipach

OCR i szukanie w treści jakichś słów kluczowych albo klasyfikacja jakims topic-modellingiem.

1

ok, dziękuję wszystkim za odpowiedzi. Kilka narzędzi, które wykorzystałem lub mam zamiar wykorzystać do rozwiązania tego problemu (dla potomnych):

  • exiftool : http://www.sno.phy.queensu.ca/~phil/exiftool/
    bardzo przydatne narzędzie CLI, które porządkuje zdjęcia na podstawie exif
    przyznam się, że doczytałem też co to są dane exif: więc jak ktoś będzie miał do przetrawienia jakieś wielkie ilości jpgów, to polecam od razu podejść do problemu ze strony exif : https://en.wikipedia.org/wiki/Exchangeable_image_file_format
  • find
  • mv
  • imagemagick oraz polecenie convert
  • digikam oraz plugin "find duplicates":
    https://www.digikam.org/node/333
    (nie jest to CLI, ale okienkowy program)
  • fslint oraz fslint-gui
    Program ten - żeby spełniał swoją rolę - to potrzebuje ogarnąć komendę find, bo na niej bazuje w back-end.
  • do pdfów narzędzia CLI:
  1. cpdf : http://community.coherentpdf.com/
  2. PDFtk

Niby 2 narzędzia są spoko, ale nie wszystkie pliki pdf przemielą. PDFtk jest narzędziem javovym i jak są jakieś błędy, to wywala debug związany z javą. Nie wiem dlaczego jedne pdf czyta, a drugie nie.

Generalnie każdy w tym topicu miał trochę racji, do problemu można podejść z wielu stron, ale trzeba wybrać odpowiednie narzędzia. Czasami też jest tylko CLI a czasami GUI+CLI - np. ciężko jest operować fotografiami tylko na podstawie CLI, bo wypada przejrzeć te fotki. W ogóle to dziwny problem z którym się spotkałem - operowanie plikami multimedialnymi (PDF, jpg) tylko przez CLI. Nie jest to wygodne, trzeba pomyśleć o podglądzie przez program GUI - np. zamountowanie lokalnie jakiegoś zewnętrznego systemu plików.

Co ciekawe nie skorzystałem jeszcze z GIMP, bo nie widzę jakoś przydatnych pluginów.

0

A masz jakiś aplet ikony volume do tint2 lub panelu fluxbox? Zainstalowałem volumeicon-alsa ale nie działa pod openbox.

1 użytkowników online, w tym zalogowanych: 0, gości: 1