Jednoduchá kontrola integrity dlouhodobě archivovaných dat

mhi

  • ****
  • 379
    • Zobrazit profil
Mam balik dat, vetsina jsou ruzne PDF, ZIP, JPEG, pripadne ISO soubory. Veci, ktere se daji (slozite) nahradit, je jich nejaka desitka TB. S daty se obcas pracuje, hlavne tak, ze se treba prejmenuji soubory, nebo nejak zabali, rozdeli, apod.

Nechci na to vymyslet nejake slozite archivni reseni, spis jen treba mit 2 kopie tech dat, ktere budu postupne udrzovat aktualni, ale bez naroku na 100% konzistenci. Jsou to data ktera se pouziji stylem "potrebuju se podivat na ..." a pak hledam.

Jak na to? Reseni ze se udela nejaky seznam CRC32/MD5/SHA neni uplne funkcni, takhle jsem to mel doted, rozpadne se to v okamziku kdy se nejak zmeni cesty. Idealni by bylo, kdyby si soubory primo sebou mohly nest informaci o sve integrite, treba CRC32. U ZIPu to je snadne, PDF/ISO/JPEG nebo takove EXE  to uz takhle nemaji. Napadlo me udelat tool, ktery upravi zname typy souboru aby mely nulove nejake CRC32 (ci fixni hodnotu typu 0x55555555), ve spouste formatu souboru je v hlavickach plno hluchych mist, kde se da nejaky dword opravit, aby vysel spravne CRC32.

Touto cestou by sla vetsina souboru overit, ze se vylozene neposkodily nejakou operaci nebo vyhnitim disku. Zajimalo by mne, jestli na tento problem je nejake existujici reseni, abych to nemusel programovat, pripadne nejake jine reseni plnici moji potrebu. Jde mi ciste o overeni, ze data se nejak nahodne neposkodila.
« Poslední změna: 14. 01. 2022, 08:03:24 od Petr Krčmář »


RDa

  • *****
  • 1 642
    • Zobrazit profil
    • E-mail
Re:Jednoducha kontrola integrity dlouhodobe archivovanych dat
« Odpověď #1 kdy: 13. 01. 2022, 18:14:48 »
jako byla doba, kdy jsem pouzival k checksumu i indexovani souboru na velkem poli takto vytvorenej soubor:

Kód: [Vybrat]
find . -type f -exec md5sum {} \;
(asi by to slo i lepe, skrze xargs - jen je treba poradne overit zda projdou vsechny podivne jmena souboru, plus taky co s prazdnyma adresarema, ktere find . taky vylistuje a muze se to nekdy hodit)

Pak se to hodi taky na hledani duplicit, kdy potrebujete uvolnit misto, ale kvuli bordelu netusite co presne lze postradat :) Jen bych tam hodil rovnou i velikost, nebo dalsi atributy.

A pokud se index vytvari novej (treba co tyden), tak lze trocha odsledovat jak probihal uklid nebo mazani - nepredpokladam ze je mnoho souboru co by melo kolize v pripade bezneho uzivatele (pokud tedy neexperimentujete primo s cilem vytvorit kolizni pdf a pod)

RDa

  • *****
  • 1 642
    • Zobrazit profil
    • E-mail
Re:Jednoducha kontrola integrity dlouhodobe archivovanych dat
« Odpověď #2 kdy: 13. 01. 2022, 18:16:59 »
Pokud to FS umi, tak by slo pridat k souborum tyto checkumy pres:
https://en.wikipedia.org/wiki/Extended_file_attributes#Linux

(pak se to drzi souboru a presouvani snad nesmaze atributy), Podobne na NTFS jsou ty ADS.

Re:Jednoducha kontrola integrity dlouhodobe archivovanych dat
« Odpověď #3 kdy: 13. 01. 2022, 18:18:13 »
Ten postup, co jste vymyslel, je neuvěřitelně komplikovaný a náchylný na chyby.

Jednoduché řešení je ukládat ten kontrolní součet do rozšířených atributů. Na linuxu je nastavíte pomocí setfattr, přečtete pomocí getfattr. Pokud byste to chtěl na Windows (NTFS), tam by se to řešilo spíš pomocí Alternate Data Streams.

Pak už si jen pohlídejte, že nepoužíváte nějaké extrémně staré nástroje, které by třeba při kopírování nebo archivaci souborů rozšířené atributy zahazovaly.

mhi

  • ****
  • 379
    • Zobrazit profil
Re:Jednoducha kontrola integrity dlouhodobe archivovanych dat
« Odpověď #4 kdy: 13. 01. 2022, 18:22:11 »
RDa, to neresi muj problem ... ta data si ziji svym zivotem, nejsou az tak dulezita aby stalo za to mit kontrolu naprosto duslednou, ta zabira prilis mnoho casu. Spis jen potrebuju vedet jest se nekde neco nerozbilo a vcas pripadne najit starsi verzi.

To nulove CRC32 mi prislo jako celkem fajn cesta, hlavne kdyz muzu jednoduse prilepit treba do PDFka do poslednich par bajtu pred xref+EOF nejaky "zero-crc32" padding...

viz https://www.nayuki.io/page/forcing-a-files-crc-to-any-value (to samozrejme neresi udrzeni validity formatu).

Koukam ze nez jsem dopsal odpoved prisly navrhy na FS atributy/streamy, to neni uplne spatna metoda, problem je, ze to musi chodit Unix+Win (NTFS) a hlavne aby se napric systemy dalo snadno kopirovat.


RDa

  • *****
  • 1 642
    • Zobrazit profil
    • E-mail
Re:Jednoducha kontrola integrity dlouhodobe archivovanych dat
« Odpověď #5 kdy: 13. 01. 2022, 18:27:28 »
Koukam ze nez jsem dopsal odpoved prisly navrhy na FS atributy/streamy, to neni uplne spatna metoda, problem je, ze to musi chodit Unix+Win (NTFS) a hlavne aby se napric systemy dalo snadno kopirovat.

To uz od toho chcete zazraky. Nejbliz k tomu maji dot files z OSX, jen to nesmi nekdo smazat nebo zapomenout presunout :)

RDa

  • *****
  • 1 642
    • Zobrazit profil
    • E-mail
Re:Jednoducha kontrola integrity dlouhodobe archivovanych dat
« Odpověď #6 kdy: 13. 01. 2022, 18:30:01 »
Jeste me napada klasicke oldschool/warez reseni - checksum file v kazdem adresari.
Pro RO uloziste to je akceptovatelny kompromis.

Re:Jednoducha kontrola integrity dlouhodobe archivovanych dat
« Odpověď #7 kdy: 13. 01. 2022, 18:55:11 »
Koukam ze nez jsem dopsal odpoved prisly navrhy na FS atributy/streamy, to neni uplne spatna metoda, problem je, ze to musi chodit Unix+Win (NTFS) a hlavne aby se napric systemy dalo snadno kopirovat.
Jak to mezi těmi systémy chcete kopírovat? ADS z NTFS by měly jít přečíst a zapisovat i z linuxu, takže pokud to bude v obou systémech na NTFS, neměl by to být problém. Nebo Windows Subsystem for Linuxu emuluje linuxové rozšířené atributy (myslím, že k tomu používá právě ADS).

Možná bych problém spíš rozdělil na dva – jak ty údaje zachovávat (k čemuž jsou podle mne ideální rozšířené atributy a ADS), a potom jak s nimi pracovat, právě třeba při kopírování napříč systémy.

mhi

  • ****
  • 379
    • Zobrazit profil
Re:Jednoducha kontrola integrity dlouhodobe archivovanych dat
« Odpověď #8 kdy: 13. 01. 2022, 19:10:50 »
Idealne to musi prezit kopii pres sit, pres SMB (na obou stranach). Proto byl muj cil CRC32 "nezachovavat nikde" ale fixnout ho do nulove hodnoty...

Re:Jednoducha kontrola integrity dlouhodobe archivovanych dat
« Odpověď #9 kdy: 13. 01. 2022, 19:15:06 »
Dejte hash nebo nějakou jeho část do názvu souboru, např.

$ sha512sum "17bd629f8f703109 precious-memories.zip"
17bd629f8f703109b3a494b4cab571069a49cffe7eb6696fa1ab3d034b4efbd59b6f181c82dca123d2ae3a7811123e30270531dbb558c33f6b6fb71344251e76  17bd629f8f703109 precious-memories.zip

Vyberte hashovací funkci, která je na zamýšlením hardwaru nejrychlejší... u mě (Aarch64 NAS) takto vyšel blake2s.

Re:Jednoducha kontrola integrity dlouhodobe archivovanych dat
« Odpověď #10 kdy: 13. 01. 2022, 19:28:46 »
Samba má jakousi podporu pro Alternate Data Streams pomocí vfs_streams_xattr. Pro uložení se používají právě rozšířené atributy. Zkuste se na to podívat.

mhi

  • ****
  • 379
    • Zobrazit profil
Re:Jednoducha kontrola integrity dlouhodobe archivovanych dat
« Odpověď #11 kdy: 13. 01. 2022, 19:29:45 »
Aha, ok, jeste musim doplnit, ze treba zrovna ty PDF musi mit ve slozkach zachovany nazev souboru. Stejne tak asi i u nejakych ISO souboru by se to mohlo siknout, kdyz jsou setrizene (treba "manuals XYZ DVD 1" ... az do 7).

Zatim se mi nejlepsi hned po mem overengineered zero-crc jevi ten warez-styl nejakych .crc32 souboru v kazde slozce, sice to neni imunni proti zmene nazvu souboru, jinak ale ano a je to univerzalnejsi nez mit zero-crc jen u definovanych formatu souboru.

FilipJirsak: dekuji, mrknu na to.

RDa

  • *****
  • 1 642
    • Zobrazit profil
    • E-mail
Re:Jednoducha kontrola integrity dlouhodobe archivovanych dat
« Odpověď #12 kdy: 13. 01. 2022, 19:49:05 »
Kdyztak se drz alespon nejakeho standardu, pak muzes najit tooly co ti pomuzou :)

*.SFV = https://en.wikipedia.org/wiki/Simple_file_verification

Re:Jednoducha kontrola integrity dlouhodobe archivovanych dat
« Odpověď #13 kdy: 13. 01. 2022, 22:59:22 »
Řešil bych tak, jak na to jsou všichni zvyklí: https://cs.wikipedia.org/wiki/Md5sum + ekvivalenty sha256sum, sha512sum atd.

Umí zapsat soubor s kontrolními součty i je verifikovat.

Re:Jednoducha kontrola integrity dlouhodobe archivovanych dat
« Odpověď #14 kdy: 14. 01. 2022, 08:05:06 »
Vyberte hashovací funkci, která je na zamýšlením hardwaru nejrychlejší... u mě (Aarch64 NAS) takto vyšel blake2s.

A co třeba xxh128sum? https://cyan4973.github.io/xxHash/

Jenom pozor na verzi, má se na delší dobu používat až verze 0.8.0 a novější. Konkrétně mezi verzemi 0.7.3 a 0.7.4 se ty hashe změnily.