Mendelova univerzita v Brně Provozně ekonomická fakulta
Realizace systému pro zálohování dat Bakalářská práce
Vedoucí práce:
Autor práce:
Ing. Jan Kryštof, Ph.D.
Filip Walder
Brno 2013
ZDE SE NACHÁZÍ ZADÁNÍ
Poděkování Touto cestou bych rád poděkoval zejména vedoucímu své bakalářské práce Ing. Janu Kryštofovi, Ph.D., za odborné vedení celé práce, cenné připomínky a čas strávený při konzultacích.
Prohlašuji, že jsem bakalářkou práci vypracoval samostatně pod odborným vedením vedoucího bakalářské práce Ing. Jana Kryštofova, Ph.D., a uvedl jsem veškeré použité prameny a literaturu. V Brně dne 21. května 2013
_________________
Abstract Walder F., Implementation of the system for data backup. Bachelor thesis. Brno, 2013 Bachelor thesis deals with problems of data backup. In the given work is to explore backup software and user requirements. Based on these investigations, a proposal is created backup system. In the final stage, the proposal implements using Google Drive API in Java programming language. Keywords Backup software, local backup, online backup, Google Drive API.
Abstrakt Walder F., Realizace systému pro zálohování dat. Bakalářská práce. Brno, 2013 Bakalářská práce se zabývá problematikou zálohování dat. V dané práci dochází k průzkumu zálohovacích softwarů a uživatelských požadavků. Na základě těchto šetření je vytvořen návrh zálohovacího systému. Ve finální fázi se daný návrh implementuje za využití Google Drive API v programovacím jazyce Java. Klíčová slova Zálohovací software, lokální záloha, online záloha, Google Drive API.
Obsah
6
Obsah 1
2
Úvod a cíl práce 1.1
Úvod ......................................................................................................... 10
1.2
Cíl práce .................................................................................................... 10
Východiska práce 2.1
11
Problematika zálohování .......................................................................... 11
2.1.1
Co a proč zálohovat? ......................................................................... 11
2.1.2
Příčiny ztráty dat ............................................................................... 11
2.1.3
Typy záloh ......................................................................................... 12
2.1.4
Datová úložiště .................................................................................. 13
2.1.5
Zálohovací média .............................................................................. 14
2.2
3
10
Analýza současného stavu ........................................................................ 15
2.2.1
Současné zálohovací programy ........................................................ 15
2.2.2
Hodnocení zálohovacích programů ................................................. 17
2.2.3
Uživatelé ........................................................................................... 22
2.2.4
Zhodnocení současných nedostatků ............................................... 23
Návrh
25
3.1
Softwarové požadavky ............................................................................. 25
3.2
Use case mapa .......................................................................................... 26
3.2.1 3.3
Návrh grafického uživatelského rozhraní ............................................... 30
3.3.1 3.4
Popis Use case esenciální formou ................................................... 27 Návrh zaměřený na použití Usage centered design ........................ 30
Řešení online zálohy ................................................................................ 33
3.4.1
Dropbox Core API ............................................................................ 33
3.4.2
Google Drive API . ............................................................................ 36
3.4.3
REST API .......................................................................................... 39
3.4.4
Volba metodiky pro online zálohu ................................................... 41
3.5
Řešení lokální zálohy ............................................................................... 42
3.5.1
Využití knihoven Apache ANT......................................................... 42
Obsah
3.5.2
Využití Java SE 7 knihoven .............................................................. 43
3.5.3
Volba metodiky pro lokální zálohu ................................................. 43
3.6
4
7
Řešení vytvoření konfiguračního souboru .............................................. 44
3.6.1
Využití formátu TXT ........................................................................ 44
3.6.2
Využití formátu XML ....................................................................... 44
3.6.3
Volba metodiky pro vytvoření konfiguračního souboru ................ 44
Implementace 4.1
Tvorba grafického uživatelského rozhraní .............................................. 45
4.1.1 4.2
Diagram tříd GUI zálohovací software............................................ 45
Provedení lokální zálohy.......................................................................... 45
4.2.1
Sekvenční diagram provedení lokální zálohy ................................. 46
4.2.2
Ukázka kódu pro kopírování ........................................................... 46
4.2.3
Ukázka kódu pro zipování ............................................................... 47
4.3
Provedení online zálohy .......................................................................... 47
4.3.1 4.4 5
45
Sekvenční diagram provedení online zálohy .................................. 48
Softwarová licence ................................................................................... 48
Diskuse 5.1
49
Možnosti dalšího pokračování ................................................................. 49
6
Závěr
50
7
Literatura
51
Přílohy
54
A
Přiložené CD
55
B
Návrh průzkumníka
56
C
Zdrojový kód pro upload na Google Disk
57
D
Zdrojový kód pro upload na Dropbox
59
Seznam obrázků
8
Seznam obrázků Obr. 1
Úplná záloha
12
Obr. 2
Rozdílová záloha
12
Obr. 3
Inkrementální záloha
13
Obr. 4
Use case mapa pro zálohovací software
27
Obr. 5
Návrh hlavního okna
31
Obr. 6
Návrh okna pro lokální zálohu
31
Obr. 7
Návrh okna pro nastavení lokální zálohy
32
Obr. 8
Návrh okna pro online zálohu
32
Obr. 9
Návrh okna pro zobrazení průběhu zálohy
33
Obr. 10
Sekvenční diagram využití OAuth2 protokolu
37
Obr. 11
Ukázka vygenerovaného kódu
38
Obr. 12
Ukázka vygenerování autorizačního kódu
39
Obr. 13
Obrázek diagram tříd GUI zálohovacího softwaru
45
Obr. 14
Sekvenční diagram provedení lokální zálohy
46
Obr. 15
Sekvenční diagram provedení online zálohy
48
Obr. 16
Návrh průzkumníka
56
Seznam tabulek
9
Seznam tabulek Tab. 1 Zhodnocení současných zálohovacích programů
22
1 Úvod a cíl práce
10
1 Úvod a cíl práce 1.1
Úvod
Žijeme v době rapidního rozvoje informačních a komunikačních technologií. V současnosti se ve většině domácností vyskytuje minimálně jeden počítač, notebook, chytrý telefon nebo další podobné zařízení, které je schopné číst, upravovat, zpracovávat a přenášet data. Všechna zmíněná zařízení využíváme ke svým každodenním činnostem, ať již v pracovním nebo osobním životě. Na daná zařízení jsme mnohem více závislí, než bychom si dokázali připustit. Práci s daty bereme jako každodenní rutinu, bohužel si však neuvědomujeme, jak lehce můžeme o důležitá data přijít. Ve většině takových případů si hodnotu ztracených dat uvědomíme až po jejich ztrátě. Pokus o jejich obnovu je finančně i časově náročný a není zaručeno, že se podaří daná data obnovit. Abychom předešli takové situaci, je vhodné využít zálohovací softwary, které bezpečně zálohují pro nás důležitá data do jiných adresářů, externích zařízení, popřípadě online na vzdálené servery. Na trhu se vyskytuje spousta zálohovacích softwarů a mnohé z nich jsou zdarma. Čas strávený zálohou důležitých dat je mnohonásobně nižší, než čas strávený při jejich obnově a co více, v takovém případě je i finančně nenáročný. To je důvod proč by pro nás záloha měla být tak důležitá.
1.2 Cíl práce Cílem bakalářské práce je provedení průzkumu dosavadních systému pro elektronické zálohování dat a zhodnocení jejich současných nedostatků. Na základě různých skupin uživatelů bude provedeno vyhodnocení požadavků na tyto zálohovací systémy. Z těchto dvou kritérií bude navržen systém pro zálohování dat. V neposlední řadě dojde k jeho implementaci.
2 Východiska práce
11
2 Východiska práce 2.1 Problematika zálohování Než dojde k vytvoření analýzy současných systémů a uživatelských požadavků, je důležité se nejdříve zmínit o možnostech, kam data zálohujeme, jak data budeme zálohovat a proč chceme data zálohovat. 2.1.1
Co a proč zálohovat?
Měli bychom zálohovat všechna data, která jsou pro nás důležitá. Potřeba zálohy spočívá v tom, jak a k čemu počítač používáme. Nutnost zálohování nebudeme pociťovat v případě, kdy počítač využijeme pouze ke hraní her nebo surfování po internetu. Naopak v případě, kdy na něm vyhotovujeme účty, počítáme rodinný rozpočet, pracujeme s fotkami apod., by nás ztráta těchto dat velice zasáhla. (1, s. 167) 2.1.2
Příčiny ztráty dat
Bez zálohy bychom o svá data přišli trvale. Je důležité si uvědomit, kolika nečekanými způsoby bychom o svá data mohli přijít. Rozlišujeme dvě základní příčiny ztráty dat: 1.
2.
Fyzikální 1.1 1.2
výrobní vada nadměrná teplota popřípadě prašnost
1.3 1.4 1.5 1.6 1.7 1.8
vniknutí kapaliny, požár gravitační přetížení (pád, nárazy, …) selhání lidského faktoru, záškodnictví přepětí, elektrostatický výboj přírodní katastrofy (záplavy, požár, zemětřesení, …) výpadek napájení
Softwarové 2.1 kolaps operačního systému či aplikace 2.2 selhání lidského faktoru (smazání, zformátování, přepsání jinými daty) 2.3 počítačové viry a malware 2.4 firmware korupce (2) (3)
2 Problematika zálohování
2.1.3
12
Typy záloh
Zálohou rozumíme vytvoření kopie dat v určitém čase a specifickém místě odlišném od zálohovaného souboru, které se ukládají v jednotném formátu. Důvodem je prevence před ztrátou dat, či jejich poškozením. Rozlišuje se úplná, rozdílová a přírůstková záloha. Úplná záloha (Full backup) Spočívá ve vytvoření kompletní kopie námi vybraných dat, která mají být chráněna. Je základním stavebním kamenem pro ostatní typy záloh.
Obr. 1 Zdroj:
Úplná záloha http://www.backup4all.com/kb/backup-types-115.html
Rozdílová záloha (Differential backup) Obsahuje všechny soubory, které byly změněny od poslední úplné zálohy. Tento typ zálohy se typicky využívá ve firmách, kde v souborech určených pro zálohování nedochází k častým změnám. Důvodem je, že při častém používání nám rozdílová data mohou zabírat více místa než na začátku pří úplné záloze. Výhodou je rychlejší obnova dat, jelikož zahrnuje zálohu úplnou a poslední rozdílovou pro dokončení obnovy. (4)
Obr. 2 Zdroj:
Rozdílová záloha http://www.backup4all.com/kb/backup-types-115.html
2.1 Problematika zálohování
13
Inkrementální záloha (Incremental backup) Zachycuje změny, které nastaly při posledním zálohování libovolného typu. Obvykle se nejvíce využívá v kombinaci s úplnou zálohou. Její výhodou je tedy rychlá doba zálohování. Nevýhodou je, že při obnovení dat se musí zpracovávat všechny přírůstkové zálohy, a tak je tato obnova časově náročnější než diferenciální. (5, s. 4–5)
Obr. 3 Zdroj:
Inkrementální záloha http://www.backup4all.com/kb/backup-types-115.html
2.1.4
Datová úložiště
Zálohování se provádí na určená datová úložiště. Z hlediska ukládání dat data dělíme na online, nearline nebo offline. Slouží jak pro ukládání dat, tak i pro jejich přístup, buď uživateli, nebo dalších součástí služby jako jsou servery apod. Existuje mnoho typů datových úložišť, která jsou volena podle aktuálních potřeb. Vrstvené úložiště (Tiered storage) Účelem vrstveného úložiště je seskupování dat do různých kategorií a následně jejich přiřazení k různým typům úložných médií takovým způsobem, aby došlo k co nejlepšímu využití ceny, výkonu kapacity a funkcí požadované danou aplikací. Úložnými médii jsou SSD disky, magnetické pásky nebo optické disky. (6, s. 193) Online úložiště S daty můžeme okamžitě pracovat bez sebemenší časové prodlevy a jsou vždy po ruce, tzv. online. Jedná se o soubory, se kterými často pracujeme a jsou pro nás důležité. Online úložiště má vysoký výkon. Médiem typicky centrální diskové pole s Fibre Channel či SAS disky. Nearline úložiště Dané úložiště se stalo kompromisem mezi nízkou cenou offline úložiště a vysokým výkonem online úložiště. Jedná se o data, která nebudeme často
2.1 Problematika zálohování
14
využívat. Je tvořeno diskovými poli ze SATA disků, které mohou být v kombinaci s migračním systémem. Ten funguje tak, že při požadavku na nearline data inteligentní migrační software zajistí automatický dočasný přesun dat ze sekundárního (pomalejšího) nearline úložiště na primární výkonný diskový prostor. V další variantě mohou být data inicializována přímo z nearline úložiště. Offline úložiště Toto úložiště se využívá pro data, která nejsou přímo k dispozici. Data jsou uložena na externích zařízeních a odstraněna ze systému nebo nahrazena zástupným znakem. Je důležité předem znát, které soubory uložíme offline, jelikož jejich převedení zpět do online stavu se může stát časově náročným procesem. (7) 2.1.5
Zálohovací média
Je třeba si uvědomit, že velice důležitým faktorem se stává kromě vhodné volby strategie zálohování i volba vhodného zálohovacího média. Každé médium je vhodné pro něco jiného. Pásky Jedná se o historicky nejstarší zálohovací médium. Hlavní výhody pásek jsou: přenositelnost, vysoká kapacita a nízká cena za gigabit. Nevýhodou se stává sekvenční přístup, který způsobuje pomalejší přístup k datům. Největší nevýhodou je spolehlivost pásek, která bývá s porovnáním s jinými médii nízká. (8, s. 327) Optické disky Mezi optická média patří CD, CD-RW a různé formáty zapisovatelných DVD. Tato média jsou dostupná a levná. Výhodou je vysoká spolehlivost a výdrž. Nevýhodou je poměrně nízká kapacita. (9) Blu-Ray můžeme považovat za třetí generaci optických disků, využívá se pro ukládání video nahrávek. Má kapacitu až 25 GB oproti starším optickým médiím. Nevýhodou těchto disků je vysoká cena. Přenosné pevné disky Jedná se o disky umístěné ve speciálním obalu, který umožňuje zařízení odpojit a přenést jinam. Připojení k počítači je umožněno pomocí SCSI, IEEE-1394, USB 2.0, nebo standardního IDE rozhraní a speciálního rámečku. Výhodou je rychlost čtení i zápisu, která je dána náhodným přístupem k datům. Nevýhodou je náchylnost k mechanickému poškození.
2.2 Analýza současného stavu
15
Výměnné disky Patří sem diskety, Jaz disky, ZIP disky, magnetooptické disky a další podobná zařízení. Tato média se dají z mechaniky vyjmout a odnést. Nevýhodou je cena a poměrně malá kapacita. (8, s. 327) Vzdálená zálohovací služba Internet se v dnešní době stal standardem, který umožnil vznik on-line zálohovacích služeb. Tyto služby jsou na vzestupu, a to především díky výhodám, které nám poskytuje. Data jsou dostupná okamžitě a především odkudkoliv. Také odpadá starost o zabezpečení dat. Použití je navíc jednoduché a nevyžaduje speciální technické prostředky. Rychlost obnovy i nahrávání dat je limitována rychlostí připojení (to je ale problém jen u opravdu velkých objemů dat). Dané výhody se stávají i nevýhodami, jelikož nemůžeme vědět, jak jsou data zabezpečována, kde se fyzicky nacházejí a kdo má kromě nás k nim přístup. Flash paměť Flash paměť se nejvíce využívá v USB flash discích. Výhodou daného zařízení je rychlost čtení i zápisu dat, mobilita a odolnost proti mechanickému poškození. Jeho velkou nevýhodou je omezený počet zápisu a především ztráta dat z paměti (statická elektřina a další podobné jevy). (9) Racetrack paměť Jedná se o novou technologii vyvíjenou firmou IBM. Paměť racetrack je stále v raných fázích vývoje. Zaznamenávání dat bude probíhat magneticky, stejně jako je tomu u pevných disků. Rozdíl však bude v rychlosti čtení a zápisu dat, která bude několika násobně vyšší. Tato technologie by měla dále mít malé rozměry a nízkou cenu. (10)
2.2 Analýza současného stavu Cílem této kapitoly je zhodnocení celkového nedostatku současných zálohovacích programů a provedení průzkumu uživatelských požadavků. Tyto analýzy budou sloužit k celkovému návrhu systému pro zálohování dat. 2.2.1
Současné zálohovací programy
Na trhu se vyskytuje spousta zálohovacích programů. Jednotlivé programy se liší svojí funkcionalitou a grafickým uživatelským rozhraním. V této kapitole budou představeny zálohovací softwary, které jsou dostupné zdarma.
2.2 Analýza současného stavu
16
Cobian Backup 11 (Gravity) Jedná se o freeware. Umožňuje zálohovat data a adresáře z původního umístění do jiných adresářů. Poskytuje také možnosti komprese do formátu 7z a ZIP včetně silného kódování. Dovoluje také zálohu přes FTP. Další výhodou je možnost volby typu zálohy a nastavení plánovače záloh. (11) Je uživatelsky přívětivý. Jeho nevýhodou je poměrně náročnější obsluha programu. Pro uživatele, kteří nemají vlastní FTP server, je nemožné využívat danou službu. Také při využíváni FTP serveru, inkrementální záloha nefunguje a provádí se úplná. Výrobci uvádějí, že se jedná o více vláknovou aplikaci, která by měla provádět paralelně několik záloh najednou. Tyto zálohy se však provádí lineárně. LupaZal Jedná se o český freeware vyvinut firmou Lupasoft s.r.o. Umožňuje provádět ruční a automatické zálohy v minutových, denních, týdenních nebo měsíčních intervalech. Poskytuje pouze úplnou nebo inkrementální zálohu do libovolného adresáře nebo na externí disk. (12) Jeho další nevýhodou oproti Cobain Backup 11 (Gravity) je chaotické uživatelské prostředí, a také chybí popis některých tlačítek. Pokud chceme tento software úspěšně použít, je potřeba nastudovat český manuál, který je k dispozici při stáhnutí softwaru. Mozy Home Jedná se o online zálohovací službu pro operační systémy Windows a Mac OS X. Daný program se musí nainstalovat fyzicky do počítače. Jeho výhodou je možnost provádění zálohování v době, kdy je CPU nejméně vytížen a je uživatelsky velice přívětivý. Pro využití bezplatné verze je k dispozici velikost pouze 2 GB. Pro přístup k zálohovaným datům lze využít webový prohlížeč nebo mobilní aplikaci. Jeho kladem i záporem je ukládání dat na neznámou lokaci. Mělo by se jednat o servery patřící firmám VMvare a EMC corporation, kteří jsou vlastníky Mozy Home. (13) Pokud náš počítač nebo externí disk bude nenávratně poškozen, o zálohovaná data nepřijdeme, avšak tento způsob není vhodný pro zálohování citlivých dat. Ovládání není v českém jazyce. Je však uživatelsky velice přívětivý a má snadnou obsluhu programu. Areca Backup Tento zálohovací nástroj umožňuje provádět inkrementální, plnou nebo diferenciální zálohu sad souborů a adresářů. Dále je to záloha přes FTP nebo FTPS. Umožňuje komprimovat soubory do formátu ZIP a ZIP64, provádět kódování a šifrování. (14) Z hlediska funkcionality se jedná o nejrobustnější freeware zálohovací aplikaci, to vede k větším nárokům na obsluhu programu a jejího znepřehlednění. Pro běžného uživatele je tento software nevhodný stejně jako LupaZal.
2.2 Analýza současného stavu
17
B-Cup XP Jedná se o jednoduchý program pro zálohování předem definovaných adresářů. Umožňuje provádět dva režimy záloh – vzorkování a zrcadlení. U vzorkování dochází k ukládání samostatné kopie dat, zatímco u zrcadlení dochází k udržení zrcadlové kopie dat. Je zde možnost nastavení spuštění zálohy v okamžiku přihlášení nebo odhlášení uživatele. (15) Je nenáročný na obsluhu programu a je uživatelsky přívětivý. Jeho nevýhodou je nízká funkcionalita programu. DropBox Jedná se o bezpečné online ukládání a sdílení dat. Tuto službu můžeme jako aplikaci nainstalovat fyzicky do počítače a bezplatně lze využít 2 GB místa. Při instalaci je nutné vyplnit svůj email a zvolit si heslo. Po instalaci se zobrazí soubor dropbox, ve kterém se nachází adresář pro ukládání dat. Dále PDF soubor s anglickým návodem postupu. Spuštěním oficiálních stránek Dropboxu a přihlášením, máme možnost vidět naše soubory a zvolit adresáře, které chceme sdílet s přáteli. Další možností jak přistupovat k Dropboxu, je přes jejich webové rozhraní. (16) Google Drive Google Drive je online datové úložiště poskytované přímo Googlem. Pro využití dané aplikace je zapotřebí vytvořit si účet na Google+ odkud můžete s Google Drivem přímo pracovat. Další možností je i stažení aplikace na počítač nebo do chytrých telefonů a dalších zařízení, ze kterých můžete nahrávat data přímo na Google Drive. Google uživatelům poskytuje 5 GB volného místa zdarma. Google Drive umožňuje nahrávání dat, jejich vytváření, ale také sdílení vybraných dat konkrétním osobám. (17) 2.2.2
Hodnocení zálohovacích programů
Vybrané zálohovací programy je třeba porovnat a vytyčit silné a slabé stránky, které budou sloužit pro celkové zhodnocení problému současných zálohovacích programů. Metoda hodnocení Pro správné hodnocení programů je využita analýza multikriteriálního rozhodování MCDA, která je univerzální, jednoduchá a objektivní. Pro danou metodu je rozhodující výběr více kritérií a stanovení jejich vah, kde špatný výběr kritérií může vést k nesprávnému rozhodnutí. (18, s. 327) Volba kritérií a jejich vah je zvolena hodnotitelem, proto výsledek může být subjektivní. Zvolená kritéria a jejich váhy K1: Grafické uživatelské rozhraní (GUI) – dané kritérium hodnotí celkový vzhled aplikace. Jak na uživatele působí jeho vzhled, včetně rozmístění různých
2.2 Analýza současného stavu
18
prvků, využití barevnosti a velikosti tlačítek apod. Slouží pro vytvoření prvního dojmu uživatele, který je důležitý. Váha kritéria: 6 K2: Složitost ovládání – toto kritérium je poměrně významné. Jedná se o orientování se uživatele v programu tak, aby s maximální určitostí věděl, co dělá a jak to dělá. Většinou platí, že čím větší funkcionalita programu je, tím vyšší je složitost ovládání. Pokud uživatel shledá, že je pro něj program složitý, s největší pravděpodobností zvolí jiný. Čím vyšší bodové hodnocení, tím je program jednodušší na obsluhu. Váha kritéria: 7 K3: Typy záloh – zde se bude hodnotit, kolik daný program umožňuje typů záloh. Z hlediska šetření místa je nejvyužívanější inkrementální zálohování, avšak z hlediska rychlosti obnovení to je diferenciální. Nejvíce místa zabírá úplná záloha. Z těchto důvodů je i toto kritérium důležité. Váha kritéria: 3 K4: Komprese zálohovaných souborů – zpravidla se jedná o formáty ZIP a ZIP64, díky kterým zálohovaný soubor zabírá méně místa. Váha kritéria: 2 K5: Možnosti zálohování – sem spadá možnost online zálohy s využitím služeb poskytované vzdáleným serverem, dále zálohy na externí disk, či jiné datové úložiště. Váha kritéria: 5 K6: Nastavení automatické zálohy – jedná se o možnost nastavení automatického zálohování v různých časových intervalech, jako je den, týden, měsíc apod. Uživatel tedy nemusí provádět pouze ruční zálohu. Váha kritéria: 4 K7: Funkcionalita – sem spadají všechny ostatní dovednosti programu a chování všech předešlých. Jedná se o kódování, šifrování, ale také využívání více-vláknového běhu programu. Dále sem spadá možnost filtrace souborů a také rychlé pozastavení, či zrušení zálohy a mnohé další. Bodové hodnocení bude redukováno nevýhodami programu. Váha kritéria: 6 Hodnocení Cobian Backup 11 (Gravity) K1: Grafické uživatelské rozhraní GUI – zobrazení a rozmístění tlačítek je vhodně zvoleno. Pro běžné uživatele přívětivé (bodové hodnocení: 5). K2: Složitost ovládání – tlačítka jsou popsána a zobrazena v českém jazyce. Cobian poskytuje nápovědu, která je poměrně slušným způsobem napsána. Je zde poněkud větší množství zbytečných tlačítek a voleb, které mohou uživatele při prvním použití zmást a nejsou zapotřebí (bodové hodnocení: 3). K3: Typy záloh – program nabízí provedení úplné, inkrementální nebo diferenciální zálohy (bodové hodnocení: 3). K4: Komprese zálohovaných souborů – program nabízí využití komprese ZIP a 7z (bodové hodnocení: 1).
2.2 Analýza současného stavu
19
K5: Možnosti zálohování – zálohovat můžeme adresáře a soubory do libovolného adresáře nebo externího zařízení. Je zde také možnost zálohy přes FTP (bodové hodnocení: 4). K6: Nastavení automatické zálohy – možnost provedení automatické zálohy v časových intervalech: den, týden, měsíc nebo rok (bodové hodnocení: 4). K7: Funkcionalita – program umožňuje provádět kódování, šifrování, spouštět zálohu jako jiný uživatel, vylučovat vybrané soubory z adresářů. Inkrementální zálohování na FTP server však nefunguje, namísto toho se provádí úplné zálohování. Dalším problémem se stává přerušení zálohování, kde dochází k veliké časové prodlevě (bodové hodnocení: 4). Hodnocení Mozy Home K1: Grafické uživatelské rozhraní (GUI) – velice přívětivé a dobře zvolené rozhraní (bodové hodnocení: 6). K2: Složitost ovládání – tlačítka jsou popsána a zobrazena v anglickém jazyce. Jsou zde jen ty nejdůležitější tlačítka a volby. Pomineme-li jazykovou bariéru, daný program je nenáročný na obsluhu (bodové hodnocení: 4). K3: Typy záloh – program využívá pouze jeden typ, a to online úplnou zálohu, která při zálohování jiných dat tu původní smaže (bodové hodnocení: 1). K4: Komprese zálohovaných souborů – program nenabízí využití komprese (bodové hodnocení: 0). K5: Možnosti zálohování – zálohovat můžeme adresáře a soubory pouze online, a to na server/y patřící vlastníkům MozyHome. Bezplatná verze nabízí pouze 2 GB (bodové hodnocení: 1). K6: Nastavení automatické zálohy – můžeme provádět denní nebo týdenní zálohu. Je zde možnost nastavit automatickou zálohu v době, kdy je CPU nejméně vytížen (bodové hodnocení: 2). K7: Funkcionalita – program nenabízí více možností. Při opětovné záloze stejného adresáře se původní záloha na úložišti Mozy Home smaže (bodové hodnocení: 1). Hodnocení LupaZal K1: Grafické uživatelské rozhraní (GUI) – tlačítka jsou malá a chybí popisky. GUI není přívětivé (bodové hodnocení: 3). K2: Složitost ovládání – vzhledem k absenci popisu tlačítek a nepřívětivému GUI je pro běžného uživatele bez využití nápovědy obsluha daného programu nereálná. Dále při editaci procesu chybí tlačítko zpět. (bodové hodnocení: 1). K3: Typy záloh – LupaZal poskytuje úplnou a inkrementální zálohu (bodové hodnocení: 2). K4: Komprese zálohovaných souborů – program umožňuje provést kompresi ve formátu ZIP (bodové hodnocení: 1). K5: Možnosti zálohování – zálohovat data můžeme do libovolného adresáře a externích zařízení typu USB (bodové hodnocení: 3).
2.2 Analýza současného stavu
20
K6: Nastavení automatické zálohy – možnost provedení automatické zálohy po minutách, hodinách, týdnech a měsících (bodové hodnocení: 4). K7: Funkcionalita – LupaZal nabízí další vymoženosti jako je resetování archivního bitu, filtrování souborů, dělení archivu. Jeho velikou nevýhodou je však chaotické GUI s náročnou obsluhou programu pro běžného uživatele (bodové hodnocení: 2). Hodnocení Areca backup K1: Grafické uživatelské rozhraní (GUI) – přívětivější uživatelské rozhraní (bodové hodnocení: 5). K2: Složitost ovládání – vzhledem k velkému množství funkcí a tlačítek může být obsluha programu zprvu složitější. Také výběr pouze konkrétního souboru na místo adresáře jako celku, může být pro uživatele náročné (bodové hodnocení: 2). K3: Typy záloh – program využívá úplnou, diferenciální i inkrementální zálohu (bodové hodnocení: 3). K4: Komprese zálohovaných souborů – k dispozici jsou formáty ZIP a ZIP64 (bodové hodnocení: 2). K5: Možnosti zálohování – zálohovat můžeme na externí zařízení typu USB nebo do libovolného adresáře, také můžeme využít FTP/ FTPS servery (bodové hodnocení: 5). K6: Nastavení automatické zálohy – lze provádět pouze ruční zálohu (bodové hodnocení: 0). K7: Funkcionalita – Areca umožňuje kódování zálohovaných dat, šifrování, filtraci souborů a simulování zálohy (bodové hodnocení: 5). Hodnocení B-CUP-XP K1: Grafické uživatelské rozhraní (GUI) – přívětivé, ale velice jednoduché uživatelské rozhraní (bodové hodnocení: 4). K2: Složitost ovládání – program je velice jednoduchý na ovládání, jelikož má malé množství funkcí (bodové hodnocení: 6). K3: Typy záloh – program nabízí pouze úplnou zálohu (bodové hodnocení: 1). K4: Komprese zálohovaných souborů – není umožněna (bodové hodnocení: 0). K5: Možnosti zálohování – pouze do libovolného adresáře, nebo externího zařízení (bodové hodnocení: 2). K6: Nastavení automatické zálohy – zálohu lze nastavit pouze v časových intervalech třiceti minut, dvou hodin, po šesti, nebo dvanácti hodinách (bodové hodnocení: 2). K7: Funkcionalita – program je velice jednoduchý a nenáročný. Neumožňuje kompresy dat ani sofistikovanější automatickou zálohu (bodové hodnocení: 1).
2.2 Analýza současného stavu
21
Hodnocení Dropbox K1: Grafické uživatelské rozhraní (GUI) – jedná se o adresář, do kterého můžeme ukládat data, která se uloží online na internet. Další způsob přístupu je přes webové rozhraní, které je velice přívětivé (bodové hodnocení: 6). K2: Složitost ovládání – program je velice jednoduchý na ovládání, nevýhodou je volba cizích jazyků, ve kterých se nenachází čeština (bodové hodnocení: 6). K3: Typy záloh – Nejedná se o klasický zálohovací software, je zde umožněno pouze kopírování souborů (bodové hodnocení: 1). K4: Komprese zálohovaných souborů – není umožněna (bodové hodnocení: 0). K5: Možnosti zálohování – Dropbox umožňuje pouze online zálohování dat (bodové hodnocení: 1). K6: Nastavení automatické zálohy – jelikož se nejedná o klasický zálohovací software, není zde automatická záloha umožněna. Soubory se musí nahrát ručně (bodové hodnocení: 0). K7: Funkcionalita – program uploaduje vybraná data na dané úložiště. Další výhodou je možnost sdílení dat s přáteli (bodové hodnocení: 2). Hodnocení Google Drive K1: Grafické uživatelské rozhraní (GUI) – na Google Drive lze přistupovat pomocí Google+ nebo využít stažení aplikace do počítače. Obě varianty mají velice přehledné a pěkné rozhraní (bodové hodnocení: 6). K2: Složitost ovládání – z počátku velké množství informací může být pro uživatele matoucí, avšak díky pěknému rozhraní je obsluha jednoduchá (bodové hodnocení: 6). K3: Typy záloh – nejedná se o klasický zálohovací software, je zde umožněno provedení uploadu souborů na vzdálený server poskytovaný Googlem (bodové hodnocení: 1). K4: Komprese zálohovaných souborů – není umožněna (bodové hodnocení: 0). K5: Možnosti zálohování – Google Drive umožňuje pouze online zálohování dat (bodové hodnocení: 1). K6: Nastavení automatické zálohy – není umožněna (bodové hodnocení: 0). K7: Funkcionalita – program pracuje na obdobném principu jako jeho konkurent Dropbox s možností vytvoření a editování souboru přímo na daném úložišti (bodové hodnocení: 2). Závěr hodnocení programů Výsledky hodnocení jednotlivých zálohovacích softwarů jsou zaneseny do tabulky, viz níže. Vzhledem ke stanovení kritérií a vah hodnotitelem, jsou dané výsledky subjektivní. Zhodnocení programů bude sloužit pro konečnou analýzu současných nedostatků zálohovacích softwarů.
2.2 Analýza současného stavu
Tab. 1
22
Zhodnocení současných zálohovacích programů
Kritéria Název programu K1 K2 K3 K4 K5 K6 K7 Maximum Výsledek Cobian Backup 11 5 3 3 1 4 4 4 24 LupaZal 3 1 2 1 3 4 2 16 MozyHome 6 4 1 0 1 2 1 15 B-CUP-XP 4 6 1 0 2 2 1 33 16 Areca-Backup 5 2 3 2 5 0 5 22 Google Drive 6 6 1 0 1 0 2 16 Dropbox 6 6 1 0 1 0 2 16 Z tabulky vyplývá, že mezi nejlepší zálohovací programy patří Cobian Backup 11 a Areca-Backup. Důležitým aspektem se stává zjištění, že programy, které mají velikou funkcionalitu, jsou poměrně obtížné pro užívání. Naopak programy, které mají vypracované GUI a jsou jednoduché na obsluhu, mají nízkou funkcionalitu. Mezi zálohovací programy, které provádějí online zálohu na vzdálená úložiště, se nejlepší variantou staly Google Drive a Dropbox. Důraz na upřednostnění kritéria je pro každého uživatele individuální. 2.2.3
Uživatelé
Každý uživatel si pod pojmem zálohovací software představí něco jiného. Vše je dáno uživatelovou znalostí, zkušeností a potřebou za jakým účelem počítač využije. Ačkoliv mnoho uživatelů má rozdílné nároky, lze uživatele rozdělit podle společných rysů do určitých skupin. Každá skupina má rozdílné požadavky na zálohovací program. Na základě sběru požadavků formou rozhovoru jsou vypsány společné požadavky pro jednotlivé skupiny. Studenti Společným rysem dané skupiny, je využívání počítače k různým školním a mimoškolním aktivitám. Na základě dotazování studentů vysokých a středních škol bylo provedeno vyhotovení společných požadavků: 1. 2. 3. 4. 5. 6. 7.
Možnost zálohování dat na libovolná externí zařízení typu USB. Uživatelská přívětivost. Možnost komprimace dat ve formátu 7z, ZIP nebo ZIP64. Automatické zálohy v denních, týdenních a měsíčních intervalech. Možnost promazání záloh podle určitého časového intervalu. Možnost poskytnout filtrování souboru (videa, dokumenty). Možnost provádět online zálohu s využitím služby poskytované vzdáleným serverem. 8. Jednoduchý a přehledný výběr souborů a složek.
2.2 Analýza současného stavu
23
9. Jednoduchost a rychlost. 10. Vytvořené lokální zálohy si program při opětovném spuštění bude pamatovat. Zaměstnanci Zde spadají zaměstnanci a drobní podnikatelé, kteří ke své práci využívají počítač. Společným rysem se stává potřeba bezpečně a často zálohovat citlivá a důležitá pracovní data. Požadavky zaměstnanců: 1. 2. 3. 4. 5. 6.
Možnost nahlédnutí do manuálu. Zálohovat data na externí zařízení typu USB nebo do jiných adresářů. Možnost komprimovat data do formátu ZIP nebo ZIP64. Možnost vytvoření heslovaného zálohovaného souboru. Možnost provézt úplnou nebo inkrementální zálohu. Zálohovaný soubor nebo adresář musí mít automaticky dopsaný čas provedení zálohy. 7. Automatické zálohy v hodinových, denních, nebo týdenních intervalech. 8. Možnost poskytnutí zobrazení průběhu ručních a automatických záloh. 9. Vypsání průběhu zálohování do textového souboru.
Ostatní Do dané kategorie spadají běžní uživatelé, kteří využívají počítač minimálně. Ke své práci ho nepotřebují, avšak na počítači si různá data, jako jsou fotky z výletů, různé obrázky a hudbu, občasně zálohují. Požadavky pro dané skupiny jsou následující: 1. 2. 3. 4. 5. 6. 2.2.4
Uživatelská přívětivost. Možnost nahlédnutí do manuálu. Automatické zálohy v měsíčních intervalech. Program musí být jednouchý a rychlý. Program musí být systémově nenáročný. Program musí zobrazovat informaci o průběhu vykonávané zálohy v procentech. Zhodnocení současných nedostatků
Zásadním problémem současných zálohovacích programů a služeb, je absence provedení jak lokální zálohy, tak využití zálohy poskytované vzdáleným serverem (online zálohy) s výjimkou uskutečnění zálohy na FTP server. Toto provedení je nevhodné, protože málo uživatelů vlastní nějaký FTP server, na který mohou svá data zálohovat. Uživatel, který chce provézt lokální zálohu a online zálohu, je nucen využít minimálně dva různé zálohovací programy – viz kapitola 2.2.2 Hodnocení zálohovacích programů. U většiny zálohovacích programů poskytující lokální zálohu je hlavním nedostatkem především
2.2 Analýza současného stavu
24
složitost ovládání. V případě poskytování automatických záloh, absence informace o časovém údaji, který by uživateli sděloval časový interval do provedení dané zálohy.
3 Návrh
25
3 Návrh Tato kapitola se zabývá řešením celkového návrhu zálohovacího softwaru. Základním stavebním kamenem jsou softwarové požadavky, které budou v dalším kroku blíže popsány. Díky těmto požadavkům bude v dalším postupu vytvořen návrh grafického uživatelského rozhraní. Konečným krokem je analýza metodik a jejich konkrétní výběr pro splnění vzniklých softwarových požadavků – viz kapitola 3.1 Softwarové požadavky.
3.1 Softwarové požadavky Softwarové požadavky vznikly syntézou uživatelských požadavků – viz kapitola 2.2.3 Uživatelé. Pro vyjádření byl vybrán strukturovaný zápis, kde jsou jednotlivé hlavní body blíže popsány pod dílčími body. Správně zapsané požadavky mají popisovat, co daný software má umět nikoliv jak toho dosáhne. (19) 1.
Software musí umožnit provádět lokální zálohu.
2.
1.1 Lokální zálohou se rozumí kopírování všech vybraných zdrojových adresářů, podadresářů a složek do vybraných lokálních adresářů. 1.2 Software zkontroluje vyplnění zdrojových a cílových složek. 1.3 Záloha se provede do cílového adresáře ve formátu: aktuální datum (yyyy-MM-dd HH:mm:ss) + název cílového adresáře. Software musí umožnit provádět automatickou lokální zálohu. 2.1 Uživatel zvolí datum a čas provedení automatické zálohy. 2.2 Uživatel nesmí zadat datum starší, než je aktuální datum. 2.3 Automatické zálohy budou prováděny v denních, hodinových, týdenních, nebo měsíčních intervalech od uživatelem zadaného data a času. 2.4 Před provedením zálohy dojde ke kontrole zadaných zdrojových a cílových složek.
3.
4.
5.
Software umožní provádět komprimaci dat ve formátu ZIP64. 3.1 Při výběru komprimace dat se provede lokální záloha do zvoleného cílového adresáře v komprimovaném formátu: aktuální datum (yyyy-MM-dd HH:mm:ss) + název cílového adresáře+.zip. Software musí umožnit zálohovat data na externí zařízení nebo do libovolných lokálních adresářů rozdílných od zdrojového. 4.1 Software poskytne zálohu pouze na externí zařízení typu USB. Software poskytne ukládání zvolených lokálních záloh.
3.2 Use case mapa
26
5.1 Při opětovném zapnutí programu software automaticky nahraje uživatelovy uložené lokální zálohy. 5.2 Uložené lokální zálohy bude moci uživatel libovolně editovat. 6.
Systém poskytne uživateli zobrazení průběhu záloh. 6.1 Systém poskytne uživateli zobrazení průběhu lokálních záloh. 6.2 Průběh lokálních záloh se vypíše do uživatelova kořenového adresáře, ve kterém vznikne adresář ZALOHA_LOG obsahující textové soubory s výpisy průběhu lokálních záloh. 6.3 Daný textový soubor bude uložen ve formátu: aktuální datum (yyyy-MM-dd HH:mm:ss) + log.txt.
7.
Software musí umožnit filtrování zdrojových souborů. 7.1 Uživatel si vybere z předdefinovaných filtrů. 7.1.1 Předdefinované filtry pro obrázky: JPEG, PNG, GIF, JPG. 7.1.2 Předdefinované filtry pro dokumenty: DOC, DOCX, TXT, PDF.
8.
7.1.3 Předdefinovaní filtry pro videa: AVI, MKV, MP4. Software umožní provádět online zálohu s využitím služby poskytované vzdáleným serverem. 8.1 Uživatel musí mít vytvořen účet na patřičném serveru. 8.2 Uživatel musí mít na svém účtu dostatek volného místa. 8.3 Uživatel musí mít připojení k internetu. 8.4 Uživatel zvolí název cílového adresáře. 8.5 Uživatel bude vybízen k vložení autorizačního kódu. 8.6 Soubory budou na uživatelův účet nahrány v komprimovaném formátu: aktuální datum (yyyy-MM-dd HH:mm:ss) + název cílového adresáře+ .zip. 8.7 Systém poskytne uživateli zobrazení průběhu online záloh.
3.2 Use case mapa Popisu funkcionality programu může být dosaženo grafickou formou, která je pro uživatele přehlednější, stručnější a jednodušší na pochopení. Takového vyjádření lze dosáhnout pomocí Use case mapy. Use case mapa se dá považovat za zjednodušený Use case diagram (Diagram případu užití). Účelem Use case diagramu je popsání funkcionality systému z pohledu uživatele. Diagram je tvořen aktorem (účastník), který komunikuje se systémem a use case (případ užití), který definuje konkrétní funkcionalitu v daném systému. Mezi případy užití jsou dvě základní vazby. Vazba extend, která rozšiřuje případ užití o další
3.2 Use case mapa
27
a vazba include, která naopak říká, že jeden případ užití obsahuje další případ užití. Use case mapa zobrazuje pouze případy užití a vztahy mezi nimi. Díky tomu je výsledný model přehlednější a jednodušší na pochopení. Use case mapa obsahuje další nové vazby. Vazba require která říká, že provedení jednoho případu užití je podmíněno provedením druhého případu užití. Další vazbou je vazba may include, která stanovuje podmínku, při které se daný případ užití provede, nebo neprovede. (20) Na obrázku 4, který je zobrazen níže, vidíme Use case mapu pro zálohovací software.
Obr. 4
Use case mapa pro zálohovací software
3.2.1
Popis Use case esenciální formou
Před navržením uživatelského rozhraní je zapotřebí využít esenciálního popisu jednotlivých use case – viz obrázek 4, které jednoduše a přehledně popíší chování jednotlivých systémových částí. Forma je popsána sérií číslovaných kroků, ve kterých uživatel provádí úkon a systém na něj patřičně reaguje. (20) Popis Use case Vytvoření zálohy 1.
Uživatel vybere možnost vytvoření zálohy.
3.2 Use case mapa
2. 3.
28
Systém zobrazí nové okno pro nastavení zálohy. Uživatel vyplní zdrojové cesty adresářů/souborů, cesty cílových adresářů, zvolí název zálohy, provedení/neprovedení automatické zálohy, možnost vybrání komprimace/kopírování.
4. Uživatel vybere možnost pro uložení zálohy. 5. Systém zkontroluje zadané údaje, pokud nesouhlasí, vyhodí CHYBA 1. 6. Systém zobrazí okno pro lokální zálohu s názvem vytvořené zálohy. 7. Systém uloží vytvořenou zálohu do konfiguračního souboru. CHYBA 1: Systém zobrazí chybové hlášení: Cesty a název zálohy nesmí být prázdné [OK]. Popis Use case Editování zálohy 1. 2. 3. 4.
5. 6.
Uživatel vybere možnost pro editování zálohy. Systém zkontroluje, zda byla označená záloha, pokud ne, vyhodí CHYBA 2. Systém zobrazí nové okno pro nastavení vybrané zálohy s jejími hodnotami. Uživatel vyplní zdrojové cesty adresářů/souborů, cesty cílových adresářů, zvolí název zálohy, provedení/neprovedení automatické zálohy, možnost vybrání komprimace/kopírování. Uživatel vybere možnost pro uložení zálohy. Systém zkontroluje pozměněné údaje, pokud jsou špatně vyplněny nebo chybí, vyhodí CHYBA 1.
7.
Systém zobrazí okno pro lokální zálohu s přepsaným názvem editované zálohy. 8. Systém přepíše změněnou zálohu v konfiguračním souboru. CHYBA 2: Systém zobrazí chybové hlášení: Není vybraný prvek k editování v listu záloh [OK]. Popis Use case Provedení lokální zálohy 1. 2.
3.
Uživatel vybere možnost pro provedení lokální zálohy. Systém zkontroluje shodnost zdrojových a cílových cest, včetně podadresářů. Pokud je zdrojový adresář shodný s cílovým, vyhodí CHYBA 3. Systém zobrazí nové okno s ukazatelem průběhu zálohování v procentech včetně výpisu zálohování jednotlivých souborů. Systém po skončení zálohy nebo jejím přerušením dané okno zavře a v předchozím okně zobrazí počet přenesených dat a jejich velikost v kB.
3.2 Use case mapa
4. 5.
29
Systém zapíše průběh zálohování do adresáře ZALOHA_LOG vytvořeném v kořenovém adresáři daného uživatele. Vytvořený textový soubor bude uložen v patřičném formátu dle softwarových požadavků.
CHYBA 3: Systém zobrazí chybové hlášení: Nesmíte mít stejný cíl a zdroj [OK]. Popis Use case Provedení automatické zálohy 1. 2. 3. 4.
Uživatel nastaví lokální zálohu pro automatické zálohování. Systém vypisuje uživateli čas pro její provedení v minutách. Systém spustí automatickou zálohu dle nastaveného času. Provedení průběhu zálohy je totožné s provedením lokální zálohy. Systém pro danou zálohu nastaví takový nový časový interval, který byl nastaven uživatelem.
Popis Use case Smazání lokální zálohy 1.
Uživatel vybere možnost pro smazání vybrané lokální zálohy.
1.
Systém zkontroluje označení zálohy. V opačném případě vyhodí CHYBA 4. 2. Systém vybranou zálohu smaže v programu. 3. Systém danou zálohu smaže v konfiguračním souboru. CHYBA 4: Systém zobrazí chybové hlášení: Nevybral jste prvek ke smazání v listu záloh [OK]. Popis Use case Získání unikátního klíče 1. 2. 3. 4.
Uživatel zvolí možnost pro vytvoření ověřovacího klíče. Systém uživatele odkáže na webovou stránku vzdáleného serveru. Uživatel vyplní patřičné údaje požadované vzdáleným serverem. Systém převezme vygenerovaný unikátní klíč do okna pro online zálohu.
5.
Při spuštění online zálohy systém ověří správnost klíče. Pokud je špatně zadaný klíč, vyhodí CHYBA 5. CHYBA 5: Systém zobrazí chybové hlášení: Špatně zadaný kód [OK]. Popis Use case Provedení online zálohy 1. 2.
Uživatel vyplní zdrojové cesty adresářů/souborů, název cílového adresáře, vloží unikátní ověřovací kód. Uživatel vybere možnost pro provedení online zálohy.
3.3 Návrh grafického uživatelského rozhraní
3. 4. 5. 6.
30
Systém zkontroluje ověřovací kód, pokud je kód špatný, vyhodí CHYBA 5. Systém zobrazí nové okno s ukazatelem průběhu zipování vybraných dat v procentech včetně výpisu průběhu zipování jednotlivých souborů. Po zazipování vybraných dat systém zobrazí nový průběh pro upload v procentech. Systém po skončení online zálohy dané okno zavře a v předchozím okně zobrazí počet zazipovaných dat a jejich velikost v kB.
3.3 Návrh grafického uživatelského rozhraní Na základě předchozích pečlivých analýz došlo k navržení grafického uživatelského rozhraní. Nástrojem pro tvorbu se stal program WireframeSketcher, protože se jedná o software, který pomáhá návrhářům a programátorům rychle vytvářet drátové modely pro mobilní, webové a desktopové aplikace. (21) Důležitým aspektem pro návrh grafického uživatelského rozhraní je zvolení vhodné metodiky, od které se bude návrh odvíjet. Volba vhodné metodiky je důležitá pro vznik uživatelsky přívětivého rozhraní. Většina interakcí mezi uživatelem a zařízením, ať už to jsou počítače, mobilní telefony a další podobná zařízení, je zprostředkována rozhraním. Jeho prostřednictvím uživatel nejen zařízení svými příkazy ovládá, ale často i skrze něj dostává zpětnou vazbu o stavu či procesech v něm. Cílem správně navrženého rozhraní je spokojenost uživatele. (22) 3.3.1
Návrh zaměřený na použití Usage centered design
Usage centered design zajišťuje rovnováhu mezi potřebami uživatele a funkcionalitou systému. Cílem je navrhnout grafické uživatelské rozhraní tak, aby uživatel prováděl úlohy efektivně a lehce tak mohl dosáhnout svého cíle. V návrhu hrají hlavní roli softwaroví inženýři, kteří se specializují na vývoj grafických uživatelských rozhraní. (23) Usage centered design zahrnuje tři hlavní abstraktní modely: 1. 2. 3.
model uživatelských rolí – zachycuje charakteristické role, které uživatel hraje při interakci se systémem. model úloh – popisuje strukturu úloh, které jsou proveditelné v systému. obsahový model – vyjadřuje obsah a organizaci uživatelského rozhraní, které jsou potřebné na podporu dříve identifikovaných úkolů. (24)
Usage centered design je tedy systematizovaný proces, který je řízen modely. Tato zvolená metodika pro návrh grafického uživatelského rozhraní nebude hlouběji popsána, protože to není náplní dané práce.
3.3 Návrh grafického uživatelského rozhraní
31
Návrh hlavního okna Jedná se o hlavní okno, které uživatel uvidí při spuštění programu jako první. Je tvořeno dvěma tlačítky. Pro využití služeb poskytované vzdáleným serverem slouží tlačítko "Online záloha". Pro využití lokální zálohy tlačítko "Lokální záloha".
Obr. 5
Návrh hlavního okna
Návrh okna pro lokální zálohu Okno je tvořeno menu možnosti, ve kterém si uživatel může vytvořit zálohu nebo program ukončit. Okno je dále tvořeno čtyřmi tlačítky, která umožňují operace pro: zálohování a editování vybrané zálohy, smazání výpisu záloh a návrat k předešlému hlavnímu oknu. Stisknutím tlačítka "Zálohuj" dojde k zobrazení dialogu s ukazatelem průběhu zálohování a výpisem názvů zálohovaných souborů, který se po skončení, nebo přerušení sám zavře.
Obr. 6
Návrh okna pro lokální zálohu
Návrh okna pro nastavení lokální zálohy Toto okno má defaultně nastaveno provádění ruční nekomprimované zálohy. Výběr zdrojových a cílových cest souborů/adresářů na disku nebo na externích
3.3 Návrh grafického uživatelského rozhraní
32
zařízeních typu USB docílíme stisknutím tlačítka "Procházet", které nám otevře okno pro výběr těchto složek.
Obr. 7
Návrh okna pro nastavení lokální zálohy
Návrh okna pro online zálohu Základním prvkem se stává políčko pro ověření, ve kterém uživatel musí zadat při spuštění online zálohy unikátní klíč. Ten získá stisknutím tlačítka "Vytvoř", které uživatele odkáže na patřičný vzdálený server poskytující služby pro online zálohu. Výběr zdrojových souborů docílíme stisknutím tlačítka "Procházet". Dalším krokem je zvolení cílového názvu adresáře, ve kterém budou data zazipována a nahrána na uživatelův účet. Stisknutím tlačítka "Poslat" dojde k zobrazení dialogu s ukazatelem průběhu zálohování v procentech.
Obr. 8
Návrh okna pro online zálohu
3.4 Řešení online zálohy
33
Návrh okna pro zobrazení průběhu zálohy Při provedení lokální nebo online zálohy se zobrazí toto okno, které ukazuje průběh zálohování v procentech včetně výpisu názvu zálohovaných souborů. Uživatel může předčasně ukončit zálohu stisknutím tlačítka "Ukončit".
Obr. 9
Návrh okna pro zobrazení průběhu zálohy
Návrh průzkumníka Průzkumník pro zdrojové cesty poskytuje možnost vybrat adresáře nebo soubory, zatímco u výběru cílových cest pouze adresáře. Obrázek se nachází v příloze.
3.4 Řešení online zálohy Pro splnění požadavků provést online zálohu s využitím služby poskytované vzdáleným serverem, je zapotřebí zvolit konkrétní službu. Dle hodnocení současných zálohovacích programů (viz kapitola 2.2.2 Hodnocení zálohovacích programů) mezi nejlepší programy/služby poskytující online zálohu patří Dropbox a Google Drive. Proto následující podkapitoly budou popisovat jednotlivé API pro dané služby. 3.4.1
Dropbox Core API
Dropbox Core API lze využít pro následující platformy: iOS, Android, Python, Ruby. Zmíněné API poskytuje metody pro nahrávání a stahování vybraných adresářů a složek. Dalšími výkonnými funkcemi jsou jednoduché sdílení, vyhledávání a obnovení souborů od poslední revize. Aby se mohlo dané API využívat je důležité pro vybranou platformu vytvořit tzv. projekt (app), který umožňuje propojení aplikace s API. Dropbox Core API se využívá zejména pro mobilní a webové aplikace. (25) Vytvoření API projektu slouží pro vygenerování unikátních klíčů (app key, app secret), díky kterým může aplikace přistupovat k danému API a využívat jeho funkce. Pro vytvoření API projektu je nezbytné mít založen vlastní účet na
3.4 Řešení online zálohy
34
Dropboxu. Níže bude popsáno vytvoření projektu a propojení s API pro platformu Android. KROK 1: Propojení aplikace s API Aby mohlo dojít k propojení aplikace s API, je důležité provézt registraci aplikace prostřednictvím vytvoření Dropbox API projektu. 1. Pro vytvoření projektu je důležité přihlásit se na Dropbox. 2. Poté přejít na: https://www.dropbox.com/developers/apps/create, zvolit jméno projektu, vybrat typ a zmáčknout "Create app". 3. Ve vytvořeném projektu jsou vygenerované unikátní App key a App secret, které jsou důležité pro práci s API. KROK 2: Stáhnuti Android SDK Základním předpokladem pro splnění KROK 2 a KROK 3 je instalace vývojového prostředí Eclipse spolu s nejnovějším JDK a JRE. 1. Je možné přejít na níže uvedené URL a stáhnout si Android SDK: http://developer.android.com/sdk/index.html#download. (25) KROK 3: Instalace ADT Pluginu 1. 2. 3.
Spustit Eclipse a vybrat Help > Install New Software. Kliknout na tlačítko přidat v pravém horním rohu. Je zapotřebí v následujícím zobrazeném dialogovém okně vložit do pole pro URL danou adresu:
4. 5. 6. 7.
https://dl-ssl.google.com/android/eclipse/. Poté potvrdit stisknutím tlačítka "OK". Jakmile je instalace dokončena, je nutno restartovat Eclipse. Dalším krokem je specifikovat umístění Android SDK adresáře. V okně "Welcome to Android Development" kliknout na "Use existing SDKs."
8.
Poté specifikovat cestu adresáře Android SDK. (26)
KROK 4: Instalace Android klienta Předpokladem pro úspěšné dokončení následujících bodů, je provedení instalace Android SDK Tools pro vývojové prostředí Eclipse. 1.
Přejít na tuto stránku a stáhnout si knihovnu pro danou platformu: https://www.dropbox.com/developers/core/sdk.
3.4 Řešení online zálohy
2.
3.
35
Otevřít adresář a vložit všechny jar soubory, které se nachází v adresáři examples\DBRoulette\libs do vaší classpath spolu se souborem AndroidManifest.xml. V souboru AndroidManifest.xml vložit váš app key, viz níže:
.
Ukázka vytvoření autentizace final static private AccessType ACCESS_TYPE =AccessType.DROP-BOX; private DropboxAPI
mDBApi; AppKeyPair appKeys = new AppKeyPair(APP_KEY, APP_SECRET); AndroidAuthSession session = new AndroidAuthSession(appKeys, ACESS_TYPE); mDBApi = new DropboxAPI(session); //začátek ověřovacího procesu, MyActivity=Class name mDBApi.getSession().startAuthentication(MyActivity.this);
Funkce startAuthentication() je ověřovací funkce, která přesměruje uživatele na mobilní aplikaci Dropbox nebo, není-li identifikována jeho instalace, dojde k přesměrování na mobilní webové stránky pro autorizaci uživatele pomocí výchozího mobilního prohlížeče. Pokud je uživatel přihlášen, zobrazí se mu potvrzovací okénko pro povolení přístupu. Při povolení přístupu, získá daná relace přístupový token pro volání API. Po povolení přístupu, se uživatel vrátí k původní činnosti. Chceme-li, aby se uživatel nemusel ověřovat pokaždé, když je vyžádán přístup k jeho Dropboxu, je zapotřebí získané tokeny uložit pro budoucí volání. if (mDBApi.getSession().authenticationSuccessful()) { try { mDBApi.getSession().finishAuthentication(); AccessTokenPair tokens = mDBApi.getSession().getAccessTokenPair(); storeKeys(tokens.key, tokens.secret); } catch (IllegalStateException e) { Log.i("DbAuthLog","Error authenticating", e);}} //...}
Metoda FinishAuthentication() váže přístup uživatele na tokeny relace, které jsme schopni získat přes getAccesTokenPair(). Tyto tokeny jsou nesmírně důležité, proto se musí ukládat pro budoucí volání. K tomu slouží zjednodušená ukázková metoda storeKeys(), která jednotlivé tokeny ukládá. Pokud bychom tak neučinili, uživatel by se musel ověřovat pokaždé, kdy je vyžádán přístup k jeho Dropboxu. (25)
3.4 Řešení online zálohy
36
Ukázka provedení uploadu Jak již bylo zmíněno dříve, aby se uživatel při provedení další operace nebyl nucen znova ověřovat, zavolají se příslušné metody, které nahrály dané tokeny při prvotním ověření. Ukázka kódu je v příloze – viz kapitola 0 Ukázka zdrojového kódu pro upload na Dropbox. 3.4.2
Google Drive API .
Pro přístup aplikace ke Google Drive API je nezbytné mít založený účet na Google+.Přístupy ke Google Drive API využívají procesy autentizace a autorizace založené na protokolu OAuth 2.0. (27) Níže bude popsán obecný návod pro přístup aplikace ke Google API s využitím OAuth 2.0 protokolu. Základní kroky pro přístup ke Google API 1.
2.
3.
4.
Registrace aplikace. 1.1 Všechny aplikace, které přistupují k rozhraní Google API musí být registrovány prostřednictvím Console API. 1.2 Výsledkem procesu registrace je sada hodnot známa Googlem a vaší aplikací (Client ID, Client secret atd). 1.3 Sada generovaných hodnot se liší v závislosti na tom, jaký typ aplikace je vytvořen. Například u aplikace JavaScript není vytvářena hodnota Client secret. Získání přístupového tokenu z Google autorizačního serveru. 2.1 Požadavek vyžaduje přihlášení uživatele na Google+ (autentizace). 2.2 Po přihlášení se uživateli zobrazí oprávnění požadované API projektem (autorizace). Poslání přístupového tokenu ke konkrétnímu API. 3.1 Poté, co aplikace získá přístupový token, může zaslat přístupový token v požadavku na konkrétní API. 3.2 Přístupové tokeny jsou platné pouze pro sadu operací a zdrojů popsaných v tokenu žádosti. 3.3 Přístupové tokeny jsou odeslány do dané API v HTTP autorizační hlavičce nebo jako parametr dotazu. Obnovení přístupového tokenu (volitelné). 4.1 Přístupové tokeny mají omezenou životnost a v některých případech aplikace potřebuje přístup ke Google API nad život jednoho přístupového tokenu. 4.2 Aplikace může získat tzv. obnovovací token, který vaší aplikaci umožní získat nové přístupové tokeny. (27)
3.4 Řešení online zálohy
37
Na obrázku níže je zobrazen sekvenční diagram využití OAuth 2.0 protokolu pro zobrazení informací o daném účtu.
Obr. 10 Zdroj:
Sekvenční diagram využití OAuth2 protokolu https://developers.google.com/accounts/docs/OAuth2
Pro bližší popis jsem vybral využití Google Drive API pro platformu Java, která je vhodným řešením pro provedení požadavku na online zálohu s využitím služeb vzdáleného serveru – viz kapitola 3.1 Softwarové požadavky. Níže bude popsán návod na propojení javovské aplikace s Google Drive API spolu s ukázkou kódu pro upload na Google Drive. KROK 1: Propojeni aplikace s Google Drive Základním krokem je registrace aplikace prostřednictvím vytvoření API projektu. 1.
2. 3. 4.
Pro vytvoření API projektu je zapotřebí přihlásit se na Google+ přes API konzoly: http://accounts.google.com/ServiceLogin?service=devconsole&passiv e=1209600&continue=http://code.google.com/apis/console/&followu p=http://code.google.com/apis/konsole/. Po úspěšném přihlášení kliknout na tlačítko Create project. Kliknout na Services a vybrat možnost Drive API. Poté kliknout na možnost API Access a zmáčknout tlačítko Create an OAuth 2.0 client ID. 4.1 Zvolit název projektu a kliknout na tlačítko "next".
3.4 Řešení online zálohy
5.
Obr. 11 Zdroj:
38
4.2 Zvolit typ aplikace a zmáčknout Create client id tlačítko. Nyní se v daném okně zobrazí vygenerované unikátní Client ID a Client secret, které bude potřeba v KROK 3.
Ukázka vygenerovaného kódu https://developers.google.com/drive/quickstart-java
KROK 2: Instalace Google API Java Clienta 1.
Java Drive API knihovnu, která je ve formátu zip, lze získat na stránce: https://code.google.com/p/google-api-javaclient/wiki/APIs#Drive_API.
2. 3. 4.
Extrahovat zip. Vložit všechny jar soubory, které se nacházejí v adresáři libs do classapth. Vložit jar soubor s názvem google-api-services-drive-v2-[version].jar do classpath.
KROK 3: Vzorová aplikace 1. 2. 3.
Je zapotřebí vytvořit textový soubor s názvem dokument.txt obsahující libovolný text. Daný soubor se musí nacházet ve vaší javovské aplikaci, ve které bude využito Google Drive Api. Posledním krokem je zkopírování uvedeného kódu v příloze – viz kapitola C Zdrojový kód pro upload na Google Disk, do konkrétní javovské aplikace. (28)
Značnou nevýhodou daného kódu je uživatelská nepřívětivost při získávání autorizačního kódu. Uživatel musí ručně vygenerovaný kód zkopírovat a vložit do patřičného místa, viz obrázek níže. Google Drive Java API bohužel nenabízí možnost provedení této operace bez uživatelova vědomí automaticky. Řešením se nabízí využití architektury REST API.
3.4 Řešení online zálohy
Obr. 12
Ukázka vygenerování autorizačního kódu
3.4.3
REST API
39
REST (Representational State Transfer) je architektura rozhraní, navržená pro distribuované prostředí. Rozhraní REST se využívá pro jednotný a snadný přístup ke zdrojům a byla vyvinuta souběžně s protokolem HTTP/1.1. Zdroje mohou být data, stejně jako stavy aplikace (pokud je lze popsat konkrétními daty). Všechny zdroje mají vlastní unikátní identifikátor URI. Zdroje jsou reprezentovány pomocí XML nebo JSON formátu. REST má čtyři základní přístupy ke zdrojům. 1. 2.
3.
4.
GET (Retrieve) – jedná se o základní metodu pro přístup ke zdrojům. Pomocí HTTP GET požadavku získáme data z konkrétního zdroje. POST (Create) – tato metoda slouží pro vytváření dat. V momentě volání dané metody není znám přesný identifikátor zdroje (zdroj ještě neexistuje, protože ho vytváříme). Vytvoření nových dat ovlivňuje uživatelská data, proto by volání dané metody mělo být autorizováno. PUT (Update) – operace změny je podobná jako u metody pro vytvoření. Hlavním rozdílem je, že musíme volat konkrétní URI konkrétního zdroje, který chceme změnit. DELETE (Remove) – operace pro smazání. Jelikož většina HTTP nástrojů a HTML formulářů jsou omezeny pouze na metody POST a GET, bývá tento problém odstraněn například voláním metody POST s parametrem, který sděluje, že se volá metoda DELETE. (29)
Využití Google Drive REST API pro práci se soubory Zde je zobrazena ukázka nejzákladnějších požadavků pro práci se soubory. Pro veškeré operace je před provedením potřeba poslat ověřovací požadavek. Zdroje jsou reprezentovány v JSON formátu. 1. GET - získá ze souboru metadata podle ID. 1.1 Ukázka požadavku: GET https://www.googleapis.com/drive/v2/files/{fileId}. 2. INSERT – vloží nový soubor se všemi vztahujícími se metadaty poslané v žádosti (request body). 2.1 Ukázka požadavku: POST https://www.googleapis.com/upload/drive/v2/files.
3.4 Řešení online zálohy
3.
4.
5.
6.
7.
8.
9.
40
Request body musí obsahovat minimálně název souboru např. "title":"NÁZEV SOUBORU". PATCH – upraví metadata daného souboru. 3.1 Ukázka požadavku: PATCH https://www.googleapis.com/drive/v2/files/{id}. UPDATE – pro změnu metadat a/nebo obsahu souboru. Tato metoda také podporuje upload. 4.1 Ukázka požadavku pro změnu metadat: PUT https://www.googleapis.com/drive/v2/files/{id}. 4.2 Ukázka požadavku pro změnu obsahu: PUT https://www.googleapis.com/upload/drive/v2/files/{fileId}. COPY – vytvoří kopii specifického souboru. 5.1 Ukázka požadavku: POST https://www.googleapis.com/drive/v2/files/{fileId}/copy. Požadavek musí obsahovat request body, ve kterém musí být minimálně zvolen název souboru, ze kterého chceme udělat kopii např. "title": "NÁZEV SOUBORU". DELETE – odstraní konkrétní soubor podle jeho ID. 6.1 Ukázka požadavku: DELETE https://www.googleapis.com/drive/v2/files/{fileId}. LIST – zobrazení listu s výpisem všech souborů. 7.1 Ukázka požadavku: GET https://www.googleapis.com/drive/v2/files. TOUCH – nastaví čas poslední změny souboru podle aktuálního času serveru. 8.1 Ukázka požadavku: POST https://www.googleapis.com/drive/v2/files/{fileId}/touch.
TRASH – přesune soubor do koše. 9.1 Ukázka požadavku: POST https://www.googleapis.com/drive/v2/files/{fileId}/trash. 10. UNTRASH – vrátí soubor zpátky z koše. 10.1 Ukázka požadavku: POST https://www.googleapis.com/drive/v2/files/{fileId}/untra sh. (30) Pokud chceme využít metodu INSERT pro vložení nového souboru společně s obsahem, je zapotřebí provézt tyto kroky:
3.4 Řešení online zálohy
1.
41
Vložení nového souboru pro získání ID s metadaty: POST /drive/v2/files HTTP/1.1 Host: www.googleapis.com Authorization: Bearer { "title": "nazev souboru", "mimeType": "mime/type", "description": "popis souboru" }
V odpovědi získáme potvrzení, že byl soubor vytvořen a můžeme z něj vyčíst ID souboru, díky kterému můžeme poslat UPDATE požadavek, který vloží požadovaný obsah do vytvořeného souboru. 2. Nahrání obsahu do vytvořeného souboru: PUT /upload/drive/v2/files/{id}?uploadType=media HTTP/1.1 Host: www.googleapis.com Authorization: Bearer Content-Type: mime/type
K dispozici je také možnost využití jednoho POST požadavku, který obsahuje více žádostí. Tento požadavek vytvoří nový soubor společně s metadaty a požadovaným obsahem souboru: POST /upload/drive/v2/files HTTP/1.1 Host: www.googleapis.com Authorization: Bearer Content-Type: multipart/form-data; boundary=287032381131322 ... --287032381131322 Content-Type: application/json { "title": "nazev souboru", "mimeType": "mime/type", "description": "popis souboru" } --287032381131322 Content-Type: mime/type --287032381131322— (31)
3.4.4
Volba metodiky pro online zálohu
Zálohovací software bude vytvořen jako desktopová aplikace. Pro experimentální účely bude využito Google Drive API pro platformu Java, jelikož
3.5 Řešení lokální zálohy
42
oproti Dropbox Core API, která má podporu u webových aplikací, je Google Drive API velice vhodným řešením pro desktopovou aplikaci. Výše zmíněný problém s ručním ověřováním, který je uživatelsky nepřívětivý – viz kapitola 3.4.2 Google Drive API, se dá vyřešit využitím architektury REST API. Aby se mohlo využít REST API pro desktopovou aplikaci, musel by tento software podporovat vlastní HTTP server. Vhodným zvolením by mohl být HTTP server Jetti, který je nenáročný a neměl by zatěžovat spuštění aplikace. Implementace REST služby by bylo využito pomocí Servletu. Servlet je javovský program, který běží na webovém serveru a zpracovává HTTP požadavky. Jeho úkolem je číst a zpracovávat data poslaná uživatelem, provést určené požadavky uživatele, získat potřebná data z databáze, zformátovat výsledky do čitelné podoby a odeslat výsledky zpět uživateli. (32) Nevýhodou daného řešení je nabobtnání aplikace o zabudovaný server, a proto v dané práci nebude využito architektury REST API.
3.5 Řešení lokální zálohy Protože online záloha bude řešena na platformě Java – viz podkapitola výše, bude i řešení lokální zálohy závislé na dané platformě. Níže budou popsány možnosti řešení lokálních záloh, na jejichž základě bude zvolena patřičná metodika. 3.5.1
Využití knihoven Apache ANT
Apache Ant jsou Java knihovny, které slouží také jako nástroj příkazového řádku a jehož úkolem je řídit jednotlivé procesy popsané v buildovacím souboru typu XML. Ant dodává řadu vestavěných úkolů, které umožňují sestavovat, kompilovat, testovat a spouštět Java aplikace. Ant lze také využít i pro jiné programovací jazyky, jako je například C nebo C++. Apache Ant patří mezi open source. (33) Ukázka řešení kopírování
Kopírování adresáře do cílového adresáře:
Kopírování jednoho souboru do cílového adresáře:
Kopírování jednoho souboru: (34)
3.5 Řešení lokální zálohy
43
Ukázka řešení zipování
Zipování vybraného adresáře do cílového adresáře:
Zipování pouze všech jar souborů ze zdrojového adresáře do cílového adresáře: (35)
3.5.2
Využití Java SE 7 knihoven
Java SE (Standart Edition) je jedna ze základních platforem Javy, která slouží pro vývoj a nasazování Java aplikací do počítačů a serverů. Java nabízí bohaté uživatelské rozhraní, výkon, všestrannost, mobilitu a bezpečnost, které dnešní aplikace tolik vyžadují. (36) Java SE 7 je zatím nejnovější aktuální verzí této platformy. Pro řešení lokální zálohy se dají využít zabudované knihovny, které nabízejí řadu užitečných funkcí. Jednou ze zásadních novinek je nové API pro práci se soubory a souborovým systémem, balíček java.nio.file, který přišel s Java SE 7. Ukázka řešení kopírování Pro vyžití funkce pro kopírování je důležité importovat patřičné balíčky a zvolené vývojové prostředí musí podporovat minimálně verzi JDK 1.7. public static Path copy(Path options) throws IOException
source,
Path
target,
CopyOption...
source – cesta ke zdrojovému souboru. destination – cesta k cílovému souboru. CopyOption: 1.
REPLACE_EXISTING – pokud se kopírovaný soubor nachází v cílovém souboru/adresáři, tak se přepíše.
2.
COPY_ATTRIBUTES – kopíruje vybraný soubor s jeho obsahem do cílového souboru/adresáře. NOFOLLOW_LINKS – pokud je soubor vyjádřen jako symbolický odkaz, dojde ke zkopírování jeho obsahu, nikoliv souboru na který odkazuje. (37)
3.
3.5.3
Volba metodiky pro lokální zálohu
Pro řešení lokální zálohy bude využito Java SE 7 knihoven. Důvodem je možnost otestování nového API pro práci se soubory a souborovým systémem, především
3.6 Řešení vytvoření konfiguračního souboru
44
otestování balíčku java.nio.file a jeho nová metoda pro kopírování, která byla ukázána v předešlé podkapitole.
3.6 Řešení vytvoření konfiguračního souboru Pro docílení požadavků, aby se vytvořené lokální zálohy znovuobnovily po opětovném spuštění programu (viz kapitola 3.1 Softwarové požadavky), se musí vytvořené zálohy zapsat do konfiguračního souboru. Ten může být vytvořen jako jednoduchý textový soubor ve formátu TXT nebo s využitím formátu XML. 3.6.1
Využití formátu TXT
Textový soubor je soubor, ve kterém jednotlivé byty mají význam znaků. Vytvoření konfiguračního textového souboru ve formátu TXT je velice jednoduché a nenáročné. Velikou výhodou je snadná editace souboru i nezkušeným uživatelem, protože zapsané formě uživatel rozumí. Navíc čtení textového souboru je možné provézt na libovolném operačním systému. Pro ukládání složitějších parametrů však využití formátu TXT jako konfiguračního souboru není vhodné. 3.6.2
Využití formátu XML
XML je zkratka anglického Extensible Markup Language, to v překladu znamená rozšiřitelný značkovací jazyk. XML soubor je uspořádaná posloupnost znaků jisté abecedy, kde se rozeznávají velká a malá písmena. Jedná se o univerzální formát pro tvorbu, správu a výměnu dokumentů. Sada značek používána v XML není oproti HTML pevně stanovená. Umožňuje mít dané informace inteligentně strukturované. Velikou výhodou XML souborů je vhodnost ukládání složitějších struktur. Jeho nevýhodou je syntaxe XML, která může být pro člověka nepřehledná. Z předchozích kapitol vyplynulo, že aplikace bude vyvíjena na platformě Javy, a proto zpracování XML musí být provedeno za pomoci JDOM. Ten vytváří pro XML data strom objektů odpovídajících typů, tedy jedná se o objektově orientované rozhraní určené speciálně pro jazyk Java. Jeho hlavními výhodami jsou: užitečnost pro dynamickou modifikaci a přístup ke stromu, užitečné pro dotazování nad XML daty, které jsou závislé na struktuře stromu. (38) 3.6.3
Volba metodiky pro vytvoření konfiguračního souboru
Konfigurační soubor musí být co nejlehčí a nejsrozumitelnější, aby uživatel byl schopen daný soubor sám lehce editovat, a proto bude mít jednoduše strukturovaná data. Úpravu XML souboru by méně zkušený uživatel nezvládl, tudíž bude v dané práci využito formátu TXT.
4. Implementace
45
4 Implementace Daná kapitola se bude zabývat implementací zálohovacího softwaru na základě analýz a návrhů z předchozích kapitol, které mimo jiné zvolily pro tento program platformu Java. Pro implementaci je voleno vývojové prostředí Eclipse.
4.1 Tvorba grafického uživatelského rozhraní Při implementaci grafického uživatelského rozhraní došlo k převedení jeho návrhu – viz kapitola 3.3 Návrh grafického uživatelského rozhraní. Návrhy byly voleny na základě pečlivých analýz, a proto při implementaci nedošlo k žádným změnám. 4.1.1
Diagram tříd GUI zálohovací software
Obr. 13
Obrázek diagram tříd GUI zálohovacího softwaru
4.2 Provedení lokální zálohy Implementace provedení lokální zálohy bude vyjádřena diagramem, který bude v následující kapitole blíže popsán.
sekvenčním
4.2 Provedení lokální zálohy
4.2.1
46
Sekvenční diagram provedení lokální zálohy
Třída Soubory slouží pro ukládání, editování a načítání dat z konfiguračního souboru. Při provedení lokální zálohy dojde k vytvoření textového souboru v kořenovém uživatelském adresáři ZALOHA_LOG, který obsahuje informace o průběhu zálohování (viz kapitola 3.1 Softwarové požadavky). Metody pro provedení lokální zálohy obsahují důležité funkce pro kopírování a komprimování, které se nacházejí ve třídě ZalohaJadro. Třída Soubory na základě názvu zálohy načte patřičná data z konfiguračního souboru: zdrojové cesty adresářů/souborů, cílové cesty, typ zálohy a nastavení automatické zálohy. Tato data pak pošle do třídy ZálohaJádro kde se provede příslušná operace. Třída JDialog slouží pro zobrazení průběhu zálohovaných dat, viz obrázek níže.
Obr. 14
Sekvenční diagram provedení lokální zálohy
4.2.2
Ukázka kódu pro kopírování
Pro provedení lokální zálohy bez možnosti komprimace daný software využívá novou metodu pro kopírování, ke které je zapotřebí mít nainstalovaný JDK 1.7 (viz kapitola 3.5.2 Využití Java SE 7 knihoven). public static void fullyCopy(String co, String kam)throws IOException{ Path from = Paths.get(co); Path to = Paths.get(kam); if(from.toFile().isDirectory()){ //jedna-li se o adresar zobrazime jeho slozky String files[] = from.toFile().list();
4.3 Provedení online zálohy
47
for (String file : files) { source = new File(from.toFile(),file).toString(); destination= new File(to.toFile(), file).toString(); //rekurzivni volani fullyCopy(source,destination); } }else{ //nová metoda u JDK 1.7 pro kopírování Files.copy(from, to, StandardCopyOption.COPY_ATTRIBUTES);}}
Tato metoda prochází jednotlivé adresáře rekurzivně. Jakmile se dostane do nejnižší adresářové struktury, začne kopírovat jednotlivé soubory. 4.2.3
Ukázka kódu pro zipování
Zde je zobrazena ukázka řešení provedení komprimace. Kód je zkrácen a ukazuje pouze jádro metody. public static void zip(String fileToZip, String zipFile)throws IOException{ destination=zipFile; File pom=new File(fileToZip); ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStre am(destination)); if(pom.isDirectory()) { for(String fileName : pom.list()) { //volani klicove metody pro zipovani addToZip("", fileToZip + "/" + fileName, zipOut); } } else{ addToZip("", fileToZip, zipOut); } //dulezite je vysledny zip soubor zavrit zipOut.flush(); zipOut.close();
} Daná metoda, která vytvoří zipovaný soubor, obsahuje metodu addToZip(…), která do daného komprimovaného souboru vkládá jednotlivá komprimovaná data.
4.3 Provedení online zálohy Online záloha bude využívat služeb poskytované vzdáleným serverem s využitím Google Drive API pro platformu Java jak bylo zmíněno v kapitole 3.4 Řešení online zálohy.
4.4 Softwarová licence
4.3.1
48
Sekvenční diagram provedení online zálohy
Pro implementaci uploadu byl využit zdrojový kód poskytovaný Googlem (viz kapitola 3.4.2 Google Drive API), který byl upraven. Třída ZalohaJadro slouží pro provedení zipování zadaných zdrojových cest do pomocného dočasného adresáře, jehož název odpovídá názvu cílového adresáře zvoleného uživatelem. Průběh komprimace a uploadu zobrazuje Třída JDialog. Jakmile je daný komprimovaný adresář nahrán na Google Disk, dojde k jeho automatickému smazání. Dočasný adresář je smazán i v případě, že by došlo k nečekané chybě při provedení online zálohy. Provedení online zálohy je vyjádřeno sekvenčním diagramem, který je zobrazen na obrázku níže.
Obr. 15
Sekvenční diagram provedení online zálohy
4.4 Softwarová licence Program je distribuován jako open-source software. Při dodržení licenčních podmínek může uživatel využívat zdrojový kód a v souladu s licenčními podmínkami tento kód editovat. Software je šířen pod licenci Apache License, Version 2.0.
5 Diskuse
49
5 Diskuse Při zpracování bakalářské práce jsem se snažil využívat aktuální literaturu v dané problematice a také literaturu v anglickém jazyce. V oblasti zkoumání současných zálohovacích systému bylo nutné využít především oficiálních webových stránek výrobců těchto programů, nikoliv klasickou literaturu. Nedostatkem práce je, že výsledný program je navrhnut jako zkušební verze. Došlo k zaplnění současných nedostatků zálohovacích systémů, avšak budoucí rozšíření jsou závislá na reakcích uživatelů při jeho zkušebním nasazení. Implementace vytvoření adresáře ZALOHA_LOG v kořenovém uživatelském adresáři, ve kterém se vytvářejí textové soubory se zobrazením průběhu záloh, byla úspěšně dosažena pouze pro operační systémy Windows. Pro jiný operační systém se daný adresář se soubory vytvoří přímo v místě spuštěného programu. Došlo k úspěšné realizaci provedení online zálohy s využitím služeb poskytované vzdáleným serverem. To je uživatelsky nepřívětivé, protože nutí uživatele ručně opisovat a vkládat vygenerovaný ověřovací kód. Při provedení záloh se uživateli zobrazí modální okno s ukazatelem procenta stahování a výpisem zálohovaných souborů. Toto řešení je uživatelsky nepřívětivé, protože v okamžiku provádění automatických záloh bude uživatel, který pracuje na počítači, vyrušen vyskakujícím okénkem.
5.1
Možnosti dalšího pokračování
Výsledný program nabízí několik rozšíření. Mezi nejdůležitější rozšíření patří využití REST API, kde uživatel není nucen vkládat ověřovací kód ručně, daný úkon program vykoná automaticky. K tomu je zapotřebí rozšířit tuto desktopovou aplikaci o HTTP server Jetti, který je nenáročný a neměl by zatěžovat spuštění aplikace. Jedno z dalších rozšíření je možnost nechat uživatele zvolit rozdělení komprimovaných dat dle zadaných parametrů. Provedení lokálních a online záloh se bude vypisovat na pozadí, nikoliv tak, aby byl uživatel rušen vyskakujícím okénkem.
6 Závěr
50
6 Závěr Cílem této práce byla realizace systému pro zálohování dat. Základním stavebním kamenem bylo provedení průzkumu současných zálohovacích systémů, na jejichž základě došlo k vyhodnocení jejich nedostatků. Dalším krokem bylo provedení průzkumu požadavků na daný software z pohledu různých uživatelských skupin, které spolu s vyhodnocením současných nedostatků vedly ke vzniku návrhu systému pro zálohování dat a posléze k jeho realizaci. V návrhu pro lokální zálohu byly představeny možnosti využití knihoven Apache ANT nebo Java SE 7. Z důvodu otestování nového API pro práci se soubory a souborovým systémem bylo využito knihoven, které obsahuje Java SE 7, přesněji balíčku java.nio.file. Návrh se dále zabýval řešením online zálohy, kde na základě softwarových požadavků a předešlých analýz bylo navrhováno využití Dropbox API nebo Google Drive API s možnou podporou REST API. Návrh se dále zabýval možnostmi vhodné volby formátu pro konfigurační soubor, kde byly zmíněny formáty XML a TXT. Daný software splňuje veškeré vytyčené softwarové požadavky, které vznikly na základě důkladných analýz. Praktickým přínosem bylo zaplnění nedostatků současných zálohovacích systémů, které uživateli neumožňovaly provádět lokální a online zálohu s využitím služeb poskytovaných vzdáleným serverem, vyjma využití FTP/FTPS serveru. Menším nedostatkem současných systémů byla také absence časového ukazatele provedení automatické zálohy. Výsledný program veškeré zhodnocené nedostatky zaplnil. Realizovaný systém je v současné fázi naimplementován jako zkušební verze a bude v nejbližší době poskytnut uživatelům pro jeho testování. Na základě jejich připomínek bude daný program rozšířen a dojde k odstranění vzniklých nedostatků implementace. Tato práce mimo jiné popsala více možností pro řešení realizace zálohovacího systému.
7 Literatura
51
7 Literatura 1
PECINOVSKÝ, Josef a PECINOVSKÝ, Rudolf. Windows 7: průvodce pro začínajícího uživatele. 1. vydání. Praha: Grada Publishing a.s., 2010, s. 143-172. ISBN 978-80-247-3210-7.
2
Příčiny ztráty dat. In: DATARECOVERY [online]. 1991, 19.7.2012 [cit. 2013-01-15]. Dostupné z: http://www.zachrana-dat.cz/cz/zachrana-datpriciny-ztraty-dat.html.
3
The Top 10 Causes Of Data Loss. In: SUBROSASOFT.COM INC. [online]. 1999, 7. 7. 2011 [cit. 2013-01-15]. Dostupné z: http://subrosasoft.com/blog/data-recovery/the-top-10-causes-of-dataloss.
4
Backup types. In: S.C. SOFTLAND S.R.L. Backup4all [online]. 1999 [cit. 2013 01-15]. Dostupné z: http://www.backup4all.com/kb/backuptypes-115.html.
5
NELSON, Steven. Pro data backup and recovery. 1st ed. New York: Springer Science+Business Media,LLC, 2011, s. 1-16. ISBN 978-1-43022662-8.
6
SCHULZ, Greg. Cloud and Virtual Data Storage Networking. 1st ed. United States of America: Taylor & Francis Group, LLC, 2012, s. 191-227. ISBN 978-1-4398-5173-9.
7
Data management. In: PROACT CZECH REPUBLIC, s.r.o. Proact. [online]. 2006, 7. 2. 2012 [cit. 2013-01-15]. Dostupné z: http://www.storyflex.cz/134-data-management-ilm-rizeni-zivotnihocyklu-dokumentu.html.
8
SMITH, Roderick W. Linux ve světě Windows: průvodce administrátora heterogenních sítí. 1. vyd. Praha: Grada, 2006, s. 326-361. ISBN 80-2471470-1.
9
PŘIBYL, Tomáš. Malý přehled zálohovacích médií. ICT security [online]. 2009 [cit. 2013-01-15]. Dostupné z: http://www.ictsecurity.cz/09/09/2zalohovani/maly-prehled-zalohovacich-medii.html.
10
FIALA, Lukáš. IBM má prototyp Racetrack paměti. In: Extrahardware.cz [online]. 2011 [cit. 2013-01-15]. Dostupné z: http://extrahardware.cnews.cz/ibm-ma-prototyp-racetrack-pameti.
11
Cobian Backup. In: LUIS COBIAN. Cobiansoft [online]. 2009 [cit. 201301-15]. Dostupné z: http://www.cobiansoft.com/cobianbackup.htm.
12
LupaZal. In : LUPASOFT S.R.O. Lupasoft.cz [online]. 2007 [cit. 2013-0115]. Dostupné z: http://www.lupasoft.cz/macs/servis/faqs/lupazal/.
7 Literatura
52
13
MozyHome FAQ. In: DECHO CORP. Mozy [online]. 2012 [cit. 2013-0115]. Dostupné z: http://mozy.ie/home/faq.
14
PETRUCI, Olivier. Areca Backup In: SOURCEFORGE.NET. [online]. 2005 [cit. 2013-01-15]. Dostupné z: http://www.areca-backup.org/.
15
B-Cup. In: MX-3 [online]. 2003, 13.6.2012 [cit. 2013-01-15]. Dostupné z: http://mx-3.cz/go.php?page=bcupxp.htm&language=cz.
16
Help Center. In: Dropbox [online]. 1998, 10.7.2012 [cit. 2013-01-15]. Dostupné z: https://www.dropbox.com/help.
17
Disk Google. In: Google Disk [online]. 2012 [cit. 2013-04-17]. Dostupné z: https://www.google.com/intl/cs/drive/start/index.html.
18
KORECKÝ, Michal a TRKOVSKÝ, Václav. Management rizik projektů: se zaměřením na projekty v průmyslových podnicích. 1. vyd. Praha: GradaPublishing, a.s., 2011, s. 253-361. ISBN 978-80-247-3221-3.
19
HOOKS, Ivy. Writing Good Requirements. In: COMPLIANCE AUTOMATION, Inc. [online]. 2001, [cit. 2013-01-15] Dostupné z: http://spacese.spacegrant.org/uploads/RequirementsWriting/Writing%20Good%20Requirements.pdf.
20
CONSTANTINE, Larry L. a LOCKWOOD, Lucy A. D. Object Modeling and User Interface Design: Designing Interactive Systems. Boston: AddisonWesley Longman Publishing Co., Inc., 2001, s. 245-279. ISBN 0-20165789-9.
21
Wireframing Tool for Professionals. In: WireframeSketcher [online]. 2008 [cit. 2013-04-18]. Dostupné z: http://wireframesketcher.com/.
22
ČERVENKOVÁ, Alena a HOŘAVA, Michal. Uživatelsky přívětivá rozhraní. 1. vyd. Praha: Horava & Associates, 2009. 177 s. ISBN 978-80254-5295-0.
23
KRYŠTOF, Jan. Modelem řízená realizace prezentační vrstvy softwarových aplikací. Brno, 2010. Disertační práce. Mendelova univerzita v Brně. Vedoucí práce doc. Ing. Arnošt Motyčka, CSc.
24
CONSTANTINE, Larry L. a LOCKWOOD, Lucy A. D. Usage-Centered Engineering for Web Applications. IEEE Software. Los Alamitos, CA: IEEE Computer Society Press, 2002, 19 (2), s. 42–50. ISSN 0740-7459.
25
Dropbox Core API. In: Dropbox [online]. 1998 [cit. 2013-01-15]. Dostupné z: https://www.dropbox.com/developers/core.
26
Installing the Eclipse Pluton. In: Android Developers [online]. 2012 [cit. 2013-01-15] Dostupné z: http://developer.android.com/sdk/installing/installing-adt.html.
7 Literatura
27
28
53
Using OAuth 2.0 to Access Google APIs. In: : Google Developers [online]. 2012, 16.2.2013 [cit. 2013-04-11] Dostupné z: https://developers.google.com/accounts/docs/OAuth2#demo. Google Drive SDK: Quickstart: Run a Drive App in Java. In: Google Developers [online]. 2012, 16.2.2013 [cit. 2013-04-11]. Dostupné z: https://developers.google.com/drive/quickstart-java.
29
MALÝ, Martin. REST: architektura pro webové API. In: DEVEL.CZ LAB S.R.O. Zdrojak.cz [online]. 2009 [cit. 2013-04-11]. Dostupné z: http://www.zdrojak.cz/clanky/rest-architektura-pro-webove-api/.
30
Google Drive SDK In: Google Developers [online]. 2012, 4.4.2013 [cit. 2013-04-17]. Dostupné z: https://developers.google.com/drive/v2/reference/files.
31
Inserting File to Google Drive through API. In: STACKOVERFLOW.COM. [online]. 2013 [cit. 2013 04-11]. Dostupné z: http://stackoverflow.com/questions/10317638/inserting-file-to-googledrive-through-api.
32
HALL, Marty. Java: servlety a stránky JSP. Praha: Neocortex, 2001, ISBN 80-863-3006-0.
33
Apache Ant In: The Apache Ant project [online]. 2002, 11.3.2013 [cit. 2013-04-17] Dostupné z: http://ant.apache.org/.
34
Copy In: The Apache Ant project [online]. 2002, 11.3.2013 [cit. 2013-0417] Dostupné z: http://ant.apache.org/manual/Tasks/copy.html.
35
Zip In: The Apache Ant project [online]. 2002, 11.3.2013 [cit. 2013-04-17] Dostupné z: http://ant.apache.org/manual/Tasks/zip.html.
36
Java SE at a Glance In: Oracle [online]. 1995, [cit. 2013-04-17] Dostupné z: http://www.oracle.com/technetwork/java/javase/overview/index.html.
37
Class Files In: Java™ Platform Standard Ed. 7 [online]. 1993, 2013 [cit. 2013-04-17] Dostupné z: http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html.
38
MLÝNKOVÁ, Irena et al. XML technologie: principy a aplikace v praxi. 1. vyd. Praha: Grada, 2008, ISBN 978-80-247-2725-7.
Přílohy
54
Přílohy
A Přiložené CD
A Přiložené CD Přiložené CD obsahuje tyto položky: 1. 2. 3. 4. 5. 6.
Bakalářkou práci ve formátu PDF. Zdrojové kódy v adresáři src v programovacím jazyce Java. Externí knihovny v adresáři dist/libs v programovacím jazyce Java. Licenční soubor LICENCE.txt. Soubor README.txt. Spustitelný jar soubor Zalohovaci_software.jar v adresáři dist.
55
B Návrh průzkumníka
B Návrh průzkumníka
Obr. 16
Návrh průzkumníka
56
C Zdrojový kód pro upload na Google Disk
57
C Zdrojový kód pro upload na Google Disk import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFl ow; import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.googleapis.auth.oauth2.GoogleTokenResponse; import import import import import import import import import import import import
com.google.api.client.http.FileContent; com.google.api.client.http.HttpTransport; com.google.api.client.http.javanet.NetHttpTransport; com.google.api.client.json.JsonFactory; com.google.api.client.json.jackson.JacksonFactory; com.google.api.services.drive.Drive; com.google.api.services.drive.DriveScopes; com.google.api.services.drive.model.File; java.io.BufferedReader; java.io.IOException; java.io.InputStreamReader; java.util.Arrays;
public class DriveCommandLine { private static String CLIENT_ID = "VAŠE CLIENT _ID viz kapitola 3.4.2 Google Drive API"; private static String CLIENT_SECRET = "VAŠE_CLIENT_SECRET, viz kapitola 3.4.2 Google Drive API "; //tato promenna je nemenna private static String REDIRECT_URI = "urn:ietf:wg:oauth:2.0:oob"; public static void main(String[] args) throws IOException { HttpTransport httpTransport = new NetHttpTransport(); JsonFactory jsonFactory = new JacksonFactory(); GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder( httpTransport, jsonFactory, CLIENT_ID, CLIENT_SECRET, Arrays.asList(DriveScopes.DRIVE)) .setAccessType("online") .setApprovalPrompt("auto").build(); //vygeneruje se url která souzi pro autorizaci String url = flow.newAuthorizationUrl().setRedirectUri(REDIRECT_URI).build(); System.out.println("Prosím vložte následující URL do vašeho prohlížeče a zkopírujte autorizační kód:"); //na konzoly se vypise url který uživatel musí vlozit do prohlizece System.out.println(" " + url);
C Zdrojový kód pro upload na Google Disk BufferedReader br = new BufferedReader(new InputStreamRea der(System.in)); //do promenne code se vlozi uzivatelem zadany autorizacni kod //z konzole String code = br.readLine(); //instance tridy GoogleTokenResponse overi vlozeny kod GoogleTokenResponse response = flow.newTokenRequest(code).setRedirectUri(REDIRECT_URI).execute(); GoogleCredential credential = new GoogleCredential().setFromTokenResponse(response); //Vytvoření nového autorizovaného API clienta Drive service = new Drive.Builder(httpTransport, jsonFactory, credential).build(); //Vlozeni souboru File body = new File(); body.setTitle("My document"); body.setDescription("A test document"); body.setMimeType("text/plain"); //název dokumentu který chceme vlozit java.io.File fileContent = new java.io.File("dokument.txt"); FileContent mediaContent = new FileContent("text/plain", fileContent); //Vykonani uploadu vlozeneho souboru File file = service.files().insert(body, mediaContent).execute(); System.out.println("File ID: " + file.getId()); }} (28)
58
D Zdrojový kód pro upload na Dropbox
D Zdrojový kód pro upload na Dropbox //získání ověřovacích tokenů AccessTokenPair access = getStoredKeys(); mDBApi.getSession().setAccessTokenPair(access); //upload na dropbox FileInputStream inputStream = null; try { File file = new File("/path/to/file.txt"); inputStream = new FileInputStream(file); Entry newEntry = mDBApi.putFile("/testing.txt", inputStream, file.length(), null, null); } catch (DropboxUnlinkedException e) { Log.e("DbExampleLog", "Chyba UnlinkedException."); } catch (DropboxException e) { Log.e("DbExampleLog", "Chyba během uploadu."); } catch (FileNotFoundException e) { Log.e("DbExampleLog", "Soubor nenalezen."); } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException e) {} } }
(25)
59