Kopia zapasowa własnym sposobem
19.07.2016 | aktual.: 20.07.2016 19:16
Dawno, dawno temu... za 30 wpisami powstał sobie malutki wpis dotyczący tworzenia kopii zapasowej bez specjalistycznych narzędzi.
Dlaczego do tego wracam? Jakiś czas temu znajomy spytał mnie, czy znam narzędzie, które pozwoliłoby utworzyć kopie konkretnie podanych folderów na dysku. Sprawa wydawała się prosta, a z racji, iż kolega zapewne sam znalazłby wymagane narzędzie, musiał być haczyk. Podczas krótkiej rozmowy wyszły założenia, jakie chciałby, aby to narzędzie spełniało.
Założenia
Oto skrócona i po części opisana lista założeń, jakie byłyby mu potrzebne:
- Kopia musi być szyfrowania, gdyż będzie umieszczana zarówno w chmurze prywatnej, jak i publicznej.
- Sam plik kopii może zostać otworzony na innej maszynie bez potrzeby instalacji oprogramowania.
- Najlepiej jakby do tworzenia kopii nie było wymagane ogromne oprogramowanie
- Kopia powinna posiadać relatywnie jak najmniejszą wagę.
- Fajnie, jakby dało się tworzyć odrębny backup każdego podanego katalogu oddzielnie, a w razie potrzeby stworzyć jedną dużej wielkości kopię całościową.
- Automatyzacja tworzenia kopii oparciu o jakiś harmonogram.
- Dbałość o prywatność kopiowanych danych.
- Pilnowanie ilości tworzonych kopii, gdyż kopie będzie robiło wielu użytkowników z różnych lokalizacji.
Jak widać, troszkę z tej naszej rozmowy wyszło. Jako, iż lubię niektóre wyzwania, a nie raz ratowaliśmy się ze znajomym i również dzięki temu znamy się tyle lat nie mogłem nie pomóc mu rozwiązać tego problemu. Tak oto powstało narzędzie, które chciałbym przedstawić poniżej, a być może komuś się przyda :)
Backupowiec
Narzędzie jest skonstruowane bardzo prosto. To jedynie skrypt .bat, który wykorzystuje odpowiednie narzędzia za pomocą linii poleceń. Do jego działania potrzebne są dwa narzędzia:
- 7-zip
- AxCrypt
Oba programy dostępne są w formie przenośnej, więc to troskę ułatwia sprawę. Jeżeli ktoś korzysta i ma oba programy zainstalowane na swoim komputerze może to również wykorzystać.
Zawartość
Narzędzie składa się z trzech plików
skrypt.exe
Po uruchomieniu tego pliku skrypt wykona całą swoją pracę, informując użytkownika o zakończeniu wykonywania kopii komunikatem na ekranie.
ZMIENNE.txt
Przechowywane są tutaj zmienne ścieżek do wymaganych programów i prostych ustawień narzędzia.
peazaip - ścieżka do pliku wykonywalnego 7z - w tym przypadku nazwa wynika z faktu, iż u znajomego zainstalowany był program PeaZip, który korzysta z 7‑zipa
crypt - ścieżka do pliku wykonywalnego aplikacji AxCrypt
password - hasło do naszych zaszyfrowanych kopii
localization - lokalizacja katalogu, w którym mają zostać umieszczone kopie. Narzędzie samoczynnie stworzy katalog "Backup", więc wystarczy podać główny folder nadrzędny
see_old - ustawienie pozwalające podejrzeć pliki uznane za stare (w archiwum znajduje się jedynie skrypt w wersji "cichej", więc właściwie obojętne co tutaj ustawimy
delete_old - usuwamy, bądź pozostawiamy znalezione pliki, które zostały uznane za stare
multiple_archives - 1 dla stworzenia osobnych kopii każdego podanego katalogu, 0 wyłącza tę opcję i wykonuje jedna pełną kopię zawierająca wszystkie wskazane w pliku LOKALIZACJE_BACKUP foldery
days - liczba określająca jak "stare" pliki chcemy wyszukać. Domyślnie jest to 7 dni. "‑" oznacza, o ile dni się cofamy w czasie.
Zmienne see_old, delete_old, multiple_archives są typowymi zmiennym typu logicznego i przyjmują wartości 0 i 1, gdzie kolejno 1 - włącza daną opcję, natomiast 0 wyłącza.
LOKALIZACJE_BACKUP.txt
Tutaj znajdziemy listę lokalizacji, których kopie potrzebujemy. Ścieżkę każdego katalogu, którego backup chcemy wykonać wpisujemy w kolejnej linii.
Co udało się osiągnąć?
Narzędzie posiada podstawowe zabezpieczenia. Sprawdza, czy istnieje plik ZMIENNE ORAZ LOKALIZACJE_BACKUP. Dla wszelkiego, na wypadek pomyłkowego usunięcia tych plików.
Skrypt tworzy zależnie od ustawienia archiwa .7z z mocnymi ustawieniami kompresji dla każdego bądź wszystkich razem katalogów łącząc je w jeden plik. W nazwie pliku znajduje się data i godzina uruchomienia skryptu, a w przypadku, kiedy kopia jest wykonywana dla każdego katalogu oddzielnie również jego nazwa.
Następnie archiwa są szyfrowane, a ich pliki źródłowe bezpiecznie nadpisywane. Tak przygotowaną kopie możemy bez przeszkód odtworzyć na komputerze bez żadnego innego oprogramowania - wystarczy do tego jedynie plik kopii i hasło.
Narzędzie przy każdym uruchomieniu sprawdza, czy istnieją pliki kopii starsze niż podana w ustawieniach liczba dni, i jeżeli taki warunek zostanie spełniony, są one bezpiecznie nadpisywane.
Co do ustawienia harmonogramu można to osiągnąć poprzez harmonogram zadań systemowych uzyskując w ten sposób w miarę automatyczne narzędzie pozwalające na łatwe i szybkie stworzenie kopii.
Ciekawostki
Przez jakiś czas był znajomy prowadził nadzór nad tworzeniem kopii, lecz teraz dzieje się to automatycznie. na szczęście jest on mega happy jak to określił, gdyż ma lekkie i w pełni zadowalające go rozwiązanie problemu. Nie musi także zmieniać wielkich zadań w przypadku, kiedy chce dodać do kopii nowy katalog. Wystarczy zmiana jednego pliku.
Podsumowując
Pomysły, sugestie, opinie? Może coś byście dodali, pomysł na ulepszenia? Nie ukrywam, że skrypt i samo narzędzie powstało na podwalinach wpisu, o którym wspomniałem na początku wpisu. Nie jest to rozwiązanie o wielkich możliwościach, lecz nie było takiej potrzeby. Miało być prosto i wygląda na to, że nawet wyszło :) Jeżeli ktoś chciałby wypróbować to cudo, to jest ono dostępne do pobrania stąd. Niestety nie bierzemy odpowiedzialności za utratę danych, więc prośba o sprawdzenie na katalogach testowych działania narzędzia przed ewentualnym właściwym użyciem ;)
Update 1
Dziękuję za komentarze. Przyzna szczerze, ze nie mam wpisów z ich ogromną ilością, chociaż miło jest przeczytać kolejny. Od powstania wpisu zrobił się mały update.
@edmun zadał dość ciekawe pytanie odnośnie podawania hasła. Wystarczy zakomentowac lub usunąć linijkę ze zmienna password, a wyświetli się okienko do podania hasła.
@Berion zapytał mnie również dlaczego jest to plik wykonywalny. Małe wyjaśnienie można znaleźc w tym komentarzu. Jest tam również kwestia wykrywania zagrożeń. Bardzo dobre stwierdzenie powiązane z bezpieczeństwem - fajnie, że zwrócono na to uwagę.
Jak wspomniałem w powyższym komentarzu nie chodzi o pokazanie gotowca. Nie jest to również żadne kierowanie do sprawdzania jego działania. Może to się komuś przyda, może nie. W razie poszukiwania zastępczych narzędzi można zajrzeć na bloga innych użytkowników lub poczytać o narzędziach w jednym z wpisów powiązanych. Drugi z nich traktuje i pokazuje podwaliny tego wpisu.
Oczywiście każdy ma własne zdanie dotyczące danych kwestii nie zamierzam go w żaden sposób podważać, czy obrażać kogokolwiek w jakikolwiek sposób. Przepraszam także za ewentualne błędy.