Keeper

TL;DR
Keeper, jednoduchou a efektivní aplikaci pro archivaci dat na externí disky v systému Windows, jsme vyvinuli za pouhý jeden den pomocí jazyka Python a knihovny PyQt. Aplikace zjednodušuje zálohování s minimálním vstupem uživatele a nabízí možnosti výběru cílových disků, souborů a konfigurace archivu, včetně komprese zip. Mezi klíčové poznatky patří práce se zástupci systému Windows a optimalizace výkonu kopírování. Keeper prokázal působivou rychlost, když přenesl 100 GB za 15 minut ve srovnání s hodinami u standardních nástrojů pro Windows.

Pro společnost Eventiq jsme realizovali malý projekt, kterým bylo vytvořit jednoduchou, ale přesto univerzální aplikaci, která by umožnila zaměstnancům snadno kopírovat data na externí disky pro zálohu a tím je motivovala k častější archivaci dat. Nejdůležitějším faktorem byla jednak jednoduchost použití, respektive co nejmenší počet klikání a výběrů, a jednak, aby aplikace fungovala na operačním systému Windows.

Pro tento projekt jsme si dali challenge celou ji vytvořit za jeden den. Proto jsme zvolili programovací jazyk Python, specificky knihovnu PyQt pro vytváření desktopových aplikací, se kterou máme částečnou předchozí zkušenost.

Ovládání aplikace

Aplikace se skládá ze čtyř hlavních bloků. V prvním bloku uživatel vybere disk, na který se zálohovaná data uloží, což bude typicky externí disk, ale může být i jakýkoli jiný. V druhém bloku si uživatel vybere jaké soubory či složky chce archivovat - zde je několik předvybraných složek, ale také možnost zvolení si jakýchkoli dat z jakéhokoli připojeného disku. Třetí část obrahuje konfiguraci výsledného archivu - buď je možné přepsat existující zálohu (tedy archivovaná složka Dokumenty bude namapována na <písmeno-disku>:\C\Users\<uživatel>\Documents) nebo vytvořit novou zálohu (složka Dokumenty bude namapována na <písmeno-disku>:\<datum>\C\Users\<uživatel>\Documents); a dále si uživatel může vybrat, jestli chce celý archiv uložit jako zip nebo ho nechat jako složku. Posledním blokem je tlačítko pro spuštění zálohy, které v průběhu archivace ukazuje progres určený podle počtu souborů.

Zajímavé poznatky

V průběhu vývoje jsme získali dva nové poznatky o tom, jak funguje operační systém Windows. Prvním poznatkem je to, že vytvoření zástupce k nějakému programu či složce není to samé jako vytvoření symbolického linku a že správné kopírování zástupců si musíme napsat sami. Zástupci jsou totiž ve skutečnosti soubory s příponou .lnk a žádná knihovna v Pythonu pro kopírování dat neumožňuje tyto zástupce kopírovat jinak než jako soubory. My jsme ale chtěli archivovat i cíl daného zástupce a následně v archivované složce vytvořit nového zástupce, kterýá bude odkazovat na archivovanou verzi. Naštěstí je možné přes knihovnu win32api získat cílovou cestu z existujícího zástupce i vytvořit nového.

Druhým poznatkem bylo to, že pro to, aby Windows mohl ukazovat elegantní progres bar s rychlostí kopírování, možstvím dat ke kopírování atd. spotřebovává poměrně dost výkonu, což výrazně ovlivňuje rychlost kopírování jen pro to, aby měl uživatel přesnější informaci o aktuálním stavu kopírování. Nedělali jsme v této oblasti žádné konkrétní testy, které bychom zde mohli prezentovat, ale byli jsme schopni zkopírovat zhruba 100GB dat za zhruba 15 minut mezi dvěma pevnými disky při použití Keeperu, což odpovídá skutečné rychlosti čtení a zápisu pevného disku. Kopírování takového množství dat pomocí standardního nástroje ve Windows trvalo několik hodin, respektive bylo provedeno přes noc.

NoxLabs je tým inženýrů a designérů, kteří se specializují na vývoj webových a mobilních aplikací. S nadšením vytváříme krásný software a vítáme nové nápady na projekty.

Chcete s námi spolupracovat? Napište nám