Verify – ověřování integrity souborů

Skok na download

Víte, jak se pozná opravdový programátor? Je tak líný, že než aby se při používání smířil s několika kliknutími navíc, napíše si radši vlastní program. A přesně takto vznikla i aplikace Verify: Existují spousty programů pro kontrolu integrity souborů na disku (zdaleka ne vyčerpávající seznam), ale žádná z nich neměla přesně ty správné vlastnosti, které bych chtěl. No a tak jsem sedl a napsal si verzi, která mým požadavkům vyhovuje. Původně jsem ani nezamýšlel ji zveřejňovat, ale když Radek Červinka na Delphi.cz spustil soutěž o nejlepší novou open-source aplikaci v Delphi, řekl jsem si, proč nevyužít už hotového. A nyní Verify zveřejňuji i na svých stránkách – třeba se někomu bude hodit tak, jako se hodí další moje „původně pro vlastní potřebu“ aplikace (PDB2TXT, Sony Font a konečně i YouTube Downloader).

Základní popis

Verify je nástroj pro pravidelné ověřování integrity souborů na disku. Dělá to tak, že pro zadaný seznam souborů vygeneruje další soubor, tzv. hashlist, ve kterém je uveden seznam existujících souborů a ke každému z nich pak hash (jedinečný otisk) obsahu a některé další údaje. Kontrola integrity pak spočívá v tom, že se pro každý soubor vypočítá hash znovu a porovná se s uloženou hodnotou – charakteristiky funkce pro výpočet otisku by měly zaručit, že je téměř vyloučené, aby dva soubory s různým obsahem měly stejný otisk*).

*) Abych předešel běžné námitce: Samozřejmě, že pokud teoreticky neomezeně velké soubory setřepáváme do konečně velkého otisku, bude nutně existovat nekonečný počet souborů se stejným otiskem. Finta je v tom, že k danému otisku nedokážeme takový alternativní soubor najít**).

**) V případě programu Verify bychom to dokázali, protože používá prolomenou hashovací funkci MD4, ale nabízí se otázka, proč by to někdo měl dělat – smyslem Verify je hlavně chránit proti náhodným změnám souborů, nepočítá příliš s tím, že se je někdo bude pokoušet úmyslně narušit. Ale i takový případ jde snadno vyřešit – prostě se místo MD4 použije třeba Whirlpool (ve zdrojáku je to změna na jednom řádku programu).

Vlastnosti

Jak bylo uvedeno výše, program jsem si napsal proto, že existující nástroje neměly vlastnosti, které na ně kladu, případně je neměly všechny v jednom balení. Jsou to zejména:

  • Čtyři základní operační režimy: build, verify, update a match. Programy pro ověřování integrity souborů vesměs poskytují dvě základní funkce: vytvoření hashlistu (build) a ověření hashlistu (verify). To je přijatelné pro případ, že se soubory jednou vytvoří, zapíšou na cílové médium a od té doby už je nikdy nikdo měnit nebude. Já ale chci integritu kontrolovat pravidelně, a to znamená, že potřebuji třetí režim pro aktualizaci hashlistu (a protože to chci používat na hodně dat, neuspokojuje mě řešení, že napřed provedu kontrolu a pak vytvořím celý hashlist od nuly). A také z důvodu rozsahu dat musím počítat s tím, že data budou uložena na více samostatných médiích a já potřebuji nějaký způsob, jak taková média pro účely ověření logicky „spojit dohromady“.

  • Šest základních stavů souborů. Běžné programy pracují se stavy „soubor se nezměnil“, „soubor se změnil“ a „soubor byl smazán“. Verify přidává další tři stavy: „soubor byl přidán“, „soubor byl zkopírován z jiného místa“ a „soubor byl přesunut z jiného místa“. Je tak možné detekovat situace, kdy na síťovém úložišti mám kopii pracovního disku a na tomto pracovním disku jsem data reorganizoval (přesouval mezi adresáři apod.).

  • Možnost uživatelsky spojovat a rozdělovat hashlisty. Tato funkce vyplývá z požadavku, že data mohou být uložena na více médiích: mohu například obsah pracovního disku vypálit na x DVD. Logicky pak budu mít také x hashlistů z DVD, které budu chtít porovnávat s jedním hashlistem na disku. Funkce je řešena tak, že hashlist je čistě textový soubor, který si uživatel může v libovolném editoru rozdělit nebo spojit podle potřeby.

  • Řešení specifických vlastností Windows. Většina ověřovacích programů si prostě a jednoduše řekne Windows o soubor a ten zpracují. Bohužel už neřeší, že v reálné praxi existuje řada situací, kdy toto nestačí – standardně nastavená Windows (nebo některé jejich verze) dodají jiný soubor nebo jiný obsah souboru, než o který si uživatel řekl. Například:

    • Windows XP nedovolí běžným způsobem pracovat se soubory, jejichž velikost přesahuje 2 TiB (resp. 2 TiB – 1 MiB, abych byl úplně přesný). Verify používá speciální režim práce, kdy to Windows umožní.

    • Žádná Windows nedovolí běžným způsobem pracovat se soubory a cestami, které jsou delší než 255 znaků. Verify podporuje cesty až do délky cca 32000 znaků. (Požadavkem je, aby byl program zkompilován pomocí Delphi 2009 nebo vyšších.)

    • 64bitová Windows skrývají 32bitovým programům, jako je Verify, některé adresáře a neviditelně místo nich „podstrkují“ adresáře jiné. Verify s tím počítá a dokáže číst skutečný obsah adresářů.

    • Windows běžně nerozlišují velikost písmen v názvu souborů (pokus, Pokus a POKUS jsou pro něj jeden a ten samý soubor), na rozdíl od Linuxu – tudíž nelze spolehlivě ověřit integritu všech souborů uložených na Linuxovém NASu. Verify dokáže za jistých okolností toto omezení obejít (viz dokumentace).

    • Verify rozpozná a volitelně přeskakuje junctions a reparse points, což je klíčové např. u uživatelského profilu ve Windows 7, kde je vytvořena nekonečně se vnořující struktura adresářů (junctions jsou tam zacyklené do sebe).

  • Podpora regulárních výrazů. Verify nabízí při výběru souborů pro zpracování nejen staré dobré wildcards (*.*, pokus?.txt apod.), ale i regulární výrazy. Díky tomu je možné do zpracování přidat nebo z něj vyloučit i celé podadresáře („zpracuj celý adresář Zdrojáky, ale přeskakuj v něm adresáře CVS a SVN.“). Pro regulární výrazy je použita knihovna PCRE.

  • Tolerance k přerušení. Verify můžete klidně uprostřed práce přerušit a operaci dokončit někdy jindy (týká se operací build a update).

  • Nová BSD licence. Program můžete téměř bez omezení používat v domácím i firemním prostředí, včetně zdrojového kódu. Zajímalo vás, jak ve svém programu obejít WOW64 redirection? Ve zdrojáku Verify najdete příklad. Naleznete i některá další řešení, která se mohou hodit (jak psát do konzole barevně, jak detekovat nebo blokovat CTRL+BREAK apod.).

Ovládání

Verify ve verzi 0.14 je ovládán výhradně z příkazové řádky. Je to dáno do značné míry tím, že mi to vzhledem k mému způsobu práce s počítačem (viz článek o FAR Manageru) připadá nejrychlejší a nejpřesnější. Nebráním se ale ani implementaci nějakého grafického rozhraní (buď formou externího frontendu nebo přímo zabudováním do aplikace), pokud o to bude zájem. Přesný popis syntaxe a parametrů je uveden v dokumentaci, nebudu ho zde proto detailně rozebírat a zaměřím se jen na konkrétní příklady použití:

  • Vytvoření nového hashlistu – minimální případ
    vfy.exe -b název_hashlistu

    Ze souborů v aktuálním pracovním adresáři a všech jeho podadresářích se vytvoří nový hashlist a zapíše se do uvedeného programu.

    Příklad výstupu:

    "doc\changelog.cz.txt"   2010-11-06T14:31:30.000      181 pQu4OlbyQ5+QPPdQmIClFA==
    "doc\license.txt"        2010-08-14T07:03:04.000     1511 xBXa7KVHiOFBufqGgl6+Gw==
    "doc\readme.cz.txt"      2010-11-06T14:46:40.000    10158 uvEzL0SmAzmG7B6F1ahWDA==
    "Source\uVerify.pas"     2010-11-06T14:31:14.000    44860 KHr2mBh4SfGzraTvsPnTgQ==
    "vfy.exe"                2010-11-02T12:01:38.000   353280 t4uR5I0lyw2HD/0e0xp+uQ==

    (Na každém řádku je jméno souboru, datum poslední změny, velikost a zakódovaný otisk obsahu.)

  • Vytvoření nového hashlistu – ze souborů ze zadaného adresáře
    vfy.exe -b název_hashlistu cesta_k_adresáři cesta_k_dalšímu_adresáři ...

    Pomocí možností příkazového řádku Windows (příkaz FOR) jde pak dělat i komplexnější operace, např. jedním příkazem vytvořit samostatný hashlist pro každý adresář ve zvoleném adresáři:
    for /d %i in (*.*) do vfy.exe -b -e "%i.chyby" "%i.hashlist" "%i"

    Parametr -e soubor zapíše do souboru soubor seznam všech souborů, které se z nějakého důvodu nepodařilo načíst – třeba proto, že k nim nemáte potřebná práva.

    Podle situace použijte parametry -wow64 (ignorovat WOW64 redirection, tzn. budou čteny skutečné soubory ze zadaného adresáře – např. Windows\System32\Drivers\etc\hosts) a -j- (přeskakovat junctions a reparse points – nutné u Windows 7 při práci s uživatelským profilem).

  • Použití regulárních výrazů
    vfy.exe -b název_hashlistu -xr \\cvs\\

    Tento příkaz vytvoří hashlist, ale přeskočí všechny soubory, které mají kdekoliv ve své cestě podadresář cvs. Pozor na to, že je třeba správně escapovat nejen speciální znaky regulárních výrazů (zde zpětné lomítko, které je z tohoto důvodu zdvojené), ale také speciální znaky nástroje, kterým Verify spouštíte: pokud ho například spouštíte z cmd.exe (nebo libovolného programu, který ho volá – typicky správci souborů), musíte před znaky ^, <, > a | dát ^; naopak pokud Verify spouštíte ze svého Windowsovského programu pomocí API funkce ShellExecute, tak tyto znaky neescapujete.

  • Ověření integrity souborů v hashlistu
    vfy.exe -v -t- název_hashlistu cesta_k_souborům

    Parametr -t- zajistí, že se bude ověřovat integrita všech souborů – i těch, u kterých si operační systém podle data poslední změny myslí, že ověřování není potřeba. Místo toho by šlo použít -t („přeskakovat soubory, u kterých zůstalo datum změny stejné“) nebo dokonce -t -tp 3600000 („přeskakovat soubory, u kterých se datum změny změnilo maximálně o 3 600 000 milisekund = 1 hodinu“ – to je užitečné po přechodu mezi letním a zimním časem).

    Seznam změněných souborů se standardně vypíše do konzole (resp. na standardní výstup), můžete si ale vyžádat výpis do zvoleného souboru pomocí parametru -o výstupní_soubor.

    Pomocí parametrů -s* a -s*- (kde na místě hvězdičky je jeden ze znaků m, a, c, d, p nebo r) si můžete vynutit výpis jen specifických typů změn (standardně se například nezobrazují nezměněné soubory).

    Příklad výstupu:

    ADDED	"Exe\doc\changelog.cz.txt"   2010-11-06T14:31:30.000      181 pQu4OlbyQ5+QPPdQmIClFA==
    ADDED	"Exe\doc\license.txt"        2010-08-14T07:03:04.000     1511 xBXa7KVHiOFBufqGgl6+Gw==
    ADDED	"Exe\doc\readme.cz.txt"      2010-11-08T07:39:40.644    10158 VFGPegco6HcYcokuxrKjYQ==
    ADDED	"Exe\vfy.exe"                2010-11-08T07:37:33.879   353792 cWdQpnLTcwSjwM/HHTlkhA==
    CHANGED	"Source\uVerify.pas"         2010-11-08T07:37:27.042    44860 UJTDQZUFya5IMpGeWbZtMA==

    Struktura je obdobná jako u operace -b, jen na začátku řádku je vždy uvedeno, co se se souborem stalo.

  • Ověření hashlistu a jeho aktualizace
    vfy.exe -u název_hashlistu

    Tato funkce dělá v zásadě totéž, co posloupnost příkazů -v a -b, ale s tím, že to dělá najednou v rámci jednoho průběhu – data z disku se tedy čtou jen jednou. Stejně jako u -v se zde uplatňují parametry jako -o výstupní_soubor, -e chybový_soubor nebo -t-.

    Pomocí -u jde také pokračovat v přerušeném -b – prostě zachovejte původní volání programu, jen místo -b napište -u.

  • Porovnání dvou hashlistů
    vfy.exe -m starý_hashlist nový_hashlist

    Porovná, k jakým změnám došlo, aby ze starého hashlistu vznikl hashlist nový.

    Příklad výstupu:

    * New hashlist *
    COPIED	"Exe\doc\changelog.cz.txt"	 from 	"doc\changelog.cz.txt"
    COPIED	"Exe\doc\license.txt"	 from 	"doc\license.txt"
    ADDED	"Exe\doc\readme.cz.txt"   2010-11-08T07:39:40.644    10158 VFGPegco6HcYcokuxrKjYQ==
    ADDED	"Exe\vfy.exe"             2010-11-08T07:37:33.879   353792 cWdQpnLTcwSjwM/HHTlkhA==
    ADDED	"Source\build.bat"        2010-11-08T07:36:17.337      565 9Xv0f6fNCAclHa1GkWCMOQ==
    ADDED	"Source\clean.bat"        2010-11-08T07:36:37.705      400 PICJP3MilcD0d9U6otjVZg==
    CHANGED	"Source\uVerify.pas"      2010-11-08T07:37:27.042    44860 UJTDQZUFya5IMpGeWbZtMA==
    
    * Old hashlist *
    DELETED	"build.bat"               2010-11-06T14:38:28.000      585 1acyfMGZwAI4hbz3ag+W0A==
    DELETED	"clean.bat"               2010-09-22T08:58:22.000      414 516Av1MnT1OSQNg9u7YmuA==
    RENAMED	"doc\changelog.cz.txt"	 to 	"Exe\doc\changelog.cz.txt"
    RENAMED	"doc\license.txt"	 to 	"Exe\doc\license.txt"
    DELETED	"doc\readme.cz.txt"       2010-11-06T14:46:40.000    10158 uvEzL0SmAzmG7B6F1ahWDA==
    DELETED	"vfy.exe"                 2010-11-02T12:01:38.000   353280 t4uR5I0lyw2HD/0e0xp+uQ==

    Co tento výstup říká: do nového hashlistu přibyly čtyři nové soubory, ze starého čtyři soubory zmizely (program to hodnotí jako přidání a výmaz a ne jako změnu, protože se změnilo jak umístění, tak obsah souborů). Soubory changelog.cz.txt a license.txt se nezměnily, jen byly přesunuty do jiného adresáře. Soubor uVerify.pas zůstal na svém místě, ale změnil se jeho obsah.

    Záznamy „COPIED“ v novém hashlistu a „RENAMED“ ve starém jsou duplicitní, ale jen zdánlivě – toto zdvojení umožňuje detekovat třeba případ, kdy je původní soubor rozkopírován do více míst, nebo když je zkopírován jen na jedno místo, ale na svém původním zůstane (tzn. je odlišeno kopírování a přesun/přejmenování).

Zkompiluj si sám

Program Verify je k dispozici včetně zdrojového kódu, můžete si ho tedy zkompilovat sami. Proč byste to měli dělat? Třeba proto, že ve standardní verzi je vypnuta podpora pro case-insensitive názvy souborů (Pokus vs POKUS, viz sekce Vlastnosti), protože tato podpora vyžaduje speciálně nastavené Windows.

Podporovány (tzn. ověřeny) jsou Delphi ve verzi 5 a 2009 a také FreePascal; předpokládám, že ostatní verze Delphi by měly fungovat s minimálními změnami, ale nemám, jak to vyzkoušet. Co se funkčnosti týče, Delphi 2009 jsou funkčně bohatší než ostatní kompilátory – v jiných verzích nefungují unicode názvy souborů (pochopitelně, protože až Delphi 2009 mají plnou podporu unicode) ani dlouhé cesty (nad 255 znaků – i tato funkce je spojena s unicode).

Pro zkompilování prosím použijte dávkový soubor Source\build.bat, ve kterém si předem odkomentujte řádek s nastavením pro váš kompilátor (první řádek by měl fungovat pro „hlavní“ Delphi ve vašem počítači, ať už je jejich verze jakákoliv, třetí je určen pro FreePascal.

Všechny potřebné komponenty třetích stran jsou uloženy v adresáři source\lib. Žádná se nemusí instalovat.

Licence

Stejně jako moje ostatní programy je i Verify vydán pod novou BSD licencí (stav k verzi 0.14). Text licence je uveden v souboru exe\doc\licence.txt. Stručné info k licenci je ve článku Free licenci, ale kterou? (část 2).

Podpora

Jak je u free programů obvyklé, na podporu není žádný nárok. Jak je obvyklé v mých programech, podporu poskytuji v rámci svého volného času zde v komentářích nebo v diskusním fóru.

Download

  • Verify v0.27 (1.1.2017, 543 KB).
    Zdrojové kódy (2107 KB)

    Do logu chyb (-e) se zapisují i chyby, které se netýkají přímo zpracovávaných souborů. Nový příkaz -u+ funguje stejně jako -u, ale nepožaduje, aby hashlist už existoval. Pokud selže čtení souboru ve standardním režimu, pokusí se YTD o jeho čtení v režimu pro zálohování. Podpora pro hashování souborů otevřených pro zápis (pokud to otvírající program povolí). Pracování soubory VFY jsou vytvářeny ve sdíleném režimu, aby šly během vytváření i číst. Výpočet rozdílů po operací -u, -v se provádí vždy, i když čtení některých souborů selhalo. Na Windows 7 a novějších se během výpočtu zobrazuje v taskbaru neurčitý progress bar, tzn. je na první pohled vidět, jestli výpočet ještě běží.

Starší verze

  • Verify v0.26 (22.7.2017, 540 KB).
    Zdrojové kódy (2100 KB)

    Nová funkce -s pro seřazení hashlistu – seřazené hashlisty se mnohem rychleji načítají. Zrychleno načítání velkých hashlistů. Data z cache se použijí jen v případě, že jsou stále aktuální. Opraveno chybné přidávání souborů do hashlistu u operací -u, -v, pokud byl použit režim -fd.

  • Verify v0.25 (21.6.2015, 525 KB).
    Zdrojové kódy (2036 KB)

    Upraven formát hashlistu pro lepší čitelnost. Podpora pro cache soubory – pokud máte složitou diskovou strukturu se spoustou junctions, můžete udělat cache všech souborů na disku (přičemž každý z nich se analyzuje jen jednou) a následně tuto cache využít pro běžné operace, ve kterých by se normálně stejné soubory s jinými názvy analyzovaly víckrát.

  • Verify v0.24 (12.3.2013, 520 KB).
    Zdrojové kódy (2000 KB)

    Ignorují se BOM na začátku řádků, aby šlo spojovat hashlisty pomocí COPY. Podpora pro vypisování jen části cesty do hashlistů (parametr -rd). Pokud při buildu (-b došlo k chybě, tak se výsledný hashlist nesetřídil podle abecedy. Pokud v operacích update, verify, match nebyl nalezen žádný rozdíl a byl zapnut výstupní soubor (-o), vytvořil se výstupní soubor o délce nula bajtů. Před zahájením operací se nyní navíc výstupní soubor smaže.

  • Verify v0.22 (3.8.2012, 517 KB).
    Zdrojové kódy (1996 KB)

    Zlepšeno rozlišování, jestli je soubor zkopírovaný nebo přesunutý, v případech, kdy je v hashlistu více kopií téhož souboru. Podstatně zrychleno vytváření seznamu výsledků ve výstupním souboru. Zaktualizován kompilační skript, ověřena funkčnost pod Delphi 5, 7, 2007, 2009, XE2, XE2 x64 a pod FreePascalem.

  • Verify v0.21 (15.7.2012, 517 KB).
    Zdrojové kódy (2076 KB)

    Kompletně přepracována struktura programu. Výkonná část je nyní oddělena od prezentační, což v dohledné době umožní vytvoření grafické verze programu. Jednotlivé funkce (Build, Verify, Update, Match, Dupes) se nyní chovají konzistentně v parametrech i ve výstupu (např. Match nyní dá pro totožný výsledek jako Update, pokud budou totožné vstupy obou funkcí). Trochu se tím měnily parametry, je to podrobně popsáno v changelogu.

  • Verify v0.20 (9.7.2012, 508 KB).
    Zdrojové kódy (2062 KB)

    Opravena spousta chyb, které se do programu vloudily v souvislosti s kompilací pod x64 – Access Violation při načítání existujícího hashlistu, řada potenciálních nekompatibilit, nemožnost program zkompilovat ve starších Delphi atd.

  • Verify v0.19 (25.6.2012, 507 KB).
    Zdrojové kódy (2051 KB)

    K dispozici je nyní 32bitová i 64bitová verze. Všechny výstupy se ukládají v kódování UTF8, pro načítání je podporováno UTF8, UTF16 a ANSI. Datum a čas se nyní převádí na UTC, takže by mělo odpadnout přepočítávání hashlistů při přechodu z letního na zimní čas a zpět. Lepší kompilační skripty, podle vzoru, který používám pro YTD.

  • Verify v0.18 (14.11.2011, 164 KB).
    Zdrojové kódy (774 KB)

    Podpora pro hledání duplicit – buď mezi několika hashlisty („co už mám uložené jinde?“ – parametr -D) nebo v rámci jednoho hashlistu („co tu mám zbytečně víckrát?“ – parametr -D1)

  • Verify v0.17 (27.12.2010, 163 KB).
    Zdrojové kódy (770 KB)

    Opravena chybka, kdy se nově přidaný soubor ve dvou stejných kopiích zobrazoval jako výsledek kopírování, ne jako nové soubory. Aplikace byla podepsána mými digitálními podpisy.

  • Verify v0.16 (19.11.2010, 159 KB).
    Zdrojové kódy (763 KB)

    Několik oprav v operaci Update: v hashlistu se aktualizuje datum v případě, že obsah zůstal nezměněn, nehlásily se smazané ani přesunuté soubory, nově se rozlišuje mezi souborem smazaným a přesunutým. Upraven výstup pro zkopírované a přejmenované soubory, aby byl konzistentní s výstupem ostatních stavů. Změněn výchozí stav parametrů -sp a -sr (nově je oboje zapnuto).

  • Verify v0.15 (15.11.2010, 158 KB).
    Zdrojové kódy (762 KB)

    Podstatně zrychlen Update pro velké hashlisty (odstraněno ukládání po každém souboru). Přerušení Update už nevymaže zbytek hashlistu.

  • Verify v0.14 (14.11.2010, 158 KB).
    Zdrojové kódy (763 KB)

    První veřejná verze.

Podobné příspěvky:

13 komentářů “Verify – ověřování integrity souborů”

  1. avatar pepak napsal:

    Verze 0.27: Do logu chyb (-e) se zapisují i chyby, které se netýkají přímo zpracovávaných souborů. Nový příkaz -u+ funguje stejně jako -u, ale nepožaduje, aby hashlist už existoval. Pokud selže čtení souboru ve standardním režimu, pokusí se YTD o jeho čtení v režimu pro zálohování. Podpora pro hashování souborů otevřených pro zápis (pokud to otvírající program povolí). Pracování soubory VFY jsou vytvářeny ve sdíleném režimu, aby šly během vytváření i číst. Výpočet rozdílů po operací -u, -v se provádí vždy, i když čtení některých souborů selhalo. Na Windows 7 a novějších se během výpočtu zobrazuje v taskbaru neurčitý progress bar, tzn. je na první pohled vidět, jestli výpočet ještě běží.

  2. avatar pepak napsal:

    Verze 0.26: Nová funkce -s pro seřazení hashlistu – seřazené hashlisty se mnohem rychleji načítají. Zrychleno načítání velkých hashlistů. Data z cache se použijí jen v případě, že jsou stále aktuální. Opraveno chybné přidávání souborů do hashlistu u operací -u, -v, pokud byl použit režim -fd.

  3. avatar pepak napsal:

    al: Pokud to nechceš kompilovat, tak si můžeš stáhnout binárku, v tom snad není žádný problém? To s tím používáním jsem nepochopil – jestli máš nějaký konkrétní problém, tak ho popiš a snad najdeme řešení.

  4. avatar al napsal:

    nemam jak zkompilovat, nemam jak pouzivat. to musi byt clovek programator, aby to mohl pouzit (windows7)? skoda …

  5. avatar pepak napsal:

    Verze 0.24: Ignorují se BOM na začátku řádků, aby šlo spojovat hashlisty pomocí COPY. Podpora pro vypisování jen části cesty do hashlistů (parametr -rd). Pokud při buildu (-b došlo k chybě, tak se výsledný hashlist nesetřídil podle abecedy. Pokud v operacích update, verify, match nebyl nalezen žádný rozdíl a byl zapnut výstupní soubor (-o), vytvořil se výstupní soubor o délce nula bajtů. Před zahájením operací se nyní navíc výstupní soubor smaže.

  6. avatar pepak napsal:

    Verze 0.22: Zlepšeno rozlišování, jestli je soubor zkopírovaný nebo přesunutý, v případech, kdy je v hashlistu více kopií téhož souboru. Podstatně zrychleno vytváření seznamu výsledků ve výstupním souboru. Zaktualizován kompilační skript, ověřena funkčnost pod Delphi 5, 7, 2007, 2009, XE2, XE2 x64 a pod FreePascalem.

  7. avatar pepak napsal:

    Verze 0.21: Kompletně přepracována struktura programu. Výkonná část je nyní oddělena od prezentační, což v dohledné době umožní vytvoření grafické verze programu. Jednotlivé funkce (Build, Verify, Update, Match, Dupes) se nyní chovají konzistentně v parametrech i ve výstupu (např. Match nyní dá pro totožný výsledek jako Update, pokud budou totožné vstupy obou funkcí). Trochu se tím měnily parametry, je to podrobně popsáno v changelogu.

  8. avatar pepak napsal:

    Verze 0.20: Opravena spousta chyb, které se do programu vloudily v souvislosti s kompilací pod x64 – Access Violation při načítání existujícího hashlistu, řada potenciálních nekompatibilit, nemožnost program zkompilovat ve starších Delphi atd.

  9. avatar pepak napsal:

    Verze 0.19: K dispozici je nyní 32bitová i 64bitová verze. Všechny výstupy se ukládají v kódování UTF8, pro načítání je podporováno UTF8, UTF16 a ANSI. Datum a čas se nyní převádí na UTC, takže by mělo odpadnout přepočítávání hashlistů při přechodu z letního na zimní čas a zpět. Lepší kompilační skripty, podle vzoru, který používám pro YTD.

  10. avatar pepak napsal:

    Verze 0.18: Podpora pro hledání duplicit – buď mezi několika hashlisty („co už mám uložené jinde?“ – parametr -D) nebo v rámci jednoho hashlistu („co tu mám zbytečně víckrát?“ – parametr -D1).

  11. avatar pepak napsal:

    Verze 0.17: Opravena chybka, kdy se nově přidaný soubor ve dvou stejných kopiích zobrazoval jako výsledek kopírování, ne jako nové soubory. Aplikace byla podepsána mými digitálními podpisy.

  12. avatar pepak napsal:

    Pardon, měl jsem u verze 0.16 špatný název souboru, takže to nešlo stáhnout…

  13. avatar pepak napsal:

    Verze 0.16: Několik oprav v operaci Update: v hashlistu se aktualizuje datum v případě, že obsah zůstal nezměněn, nehlásily se smazané ani přesunuté soubory, nově se rozlišuje mezi souborem smazaným a přesunutým. Upraven výstup pro zkopírované a přejmenované soubory, aby byl konzistentní s výstupem ostatních stavů. Změněn výchozí stav parametrů -sp a -sr (nově je oboje zapnuto).

Leave a Reply

Themocracy iconWordPress Themes

css.php