Kopia zapasowa bez specjalistycznych narzędzi? Czy to możliwe?
07.09.2013 | aktual.: 08.09.2013 08:27
O kopii zapasowej czy kopii bezpieczeństwa przypominamy sobie najczęściej wtedy, gdy zauważamy, że jej nie zrobiliśmy. Niestety, czasem utrata danych zdarza się tak nagle. Swojego czasu (oj dawne czasy :P) sprawdzałem jak wypadają w przypadku tworzenia kopii zapasowej dedykowane do tego celu programy. Czy jednak musimy instalować dodatkowe oprogramowanie by stworzyć kopię zapasowa dostosowaną do naszych potrzeb?
Można stwierdzić, że... nie. Wystarczy tylko odrobina chęci i sprytny archiwizer p;lików PeaZip. Tak wystarczą tylko te dwa punkty. Na początek może założenia tworzonych backupów:
- w przypadku zmiany plików, archiwum się aktualizuje
- względnie dobra kompresja plików
- backup każdej pozycji w osobnym archiwum
- możliwość zrobienia kopii tylko jednej wybranej przez użytkownika lokalizacji, bądź wszystkich naraz
Oczywiście założenia dla każdego z nas mogą być inne. Możemy np. stworzyć foldery z datą i godziną i dopiero w nich przechowywać archiwa czy tez dodać w nazwie pliku datę czy czas.
Do dzieła
PeaZip oferuje wsparcie formatu 7z. Oferuje także możliwość wykonywania powierzonych mu zadań poprzez wiersz poleceń o co w głównej mierze opiera się idea tworzenia kopii w tym wpisie. Stworzymy skrypt BAT, w którym zdefiniujemy zadania polegające na stworzeniu naszej kopii bezpieczeństwa.
Otóż na początku musimy zrobić dwie rzeczy.
Lokalizacja PeaZip
Pobieramy wersję portable PeaZip i wypakowujemy ja np. na dysku zewnętrznym. Dzięki temu w przypadku chęci zrobienia kopii na innym komputerze po podłączeniu dysku nie będzie z tym problemu. Oczywiście w przypadku, gdy używamy jej jako naszego archiwizera lub robimy kopię danych tylko na jednym komputerze możemy pobrać wersję instalacyjna lub wypakować program na naszym lokalnym dysku. Zapisujemy sobie ścieżkę do katalogu Z programem PeaZip.
Wybranie katalogów do archiwizacji
Drugą czynnością, jaka powinniśmy zrobić jest znalezienie ścieżki do miejsc, których kopię chcemy zrobić. Przykładowo lokalizacja profilu klienta poczty Thunderbird znajduje się w przypadku np. Windows 7 w podanej ścieżce:
C:\Users\Nazwa_użytkownika\AppData\Roaming\Thunderbird
Oczywiście zaimplementujemy zmienne środowiskowe, tak by nasz skrypt działał niezależnie od nazwy użytkownika, więc nasza ścieżka w przypadku tego programu będzie wyglądała następująco:
"%APPDATA%"\Thunderbird
Polecam spisać sobie listę takich ścieżek w notatniku. Często lokalizację profili, czy ustawień można znaleźć w opcjach programu czy na stronie producenta.
Gdy już stworzymy sobie taką listę miejsc jakie chcemy zarchiwizować przystąpmy do napisania skryptu wykonującego kopie bezpieczeństwa zgodną z naszymi ustaleniami.
Więc BATem go...
Na początek „nagłówek” naszego skryptu i ustawienie odpowiedniej trony kodowania (nie zawsze jets konieczna)
@echo off @setlocal chcp 1250>nul
oraz ustawienie zmiennej z odwołaniem do archiwizera 7z:
set peazaip=L:\peazip\res\7z\7z.exe
Po ścieżce do katalogu PeaZip dodajemy
res\7z\7z.exe
by korzystać z archiwizera 7z.exe
By nasz skrypt wyglądał profesjonalnie stworzymy mu nawet menu :) Nadajemy na początku główny wygląd „programu” wraz z samym menu:
:menu cls echo Witaj w programie do backupu. Wybierz interesujący Cię backup do wykonania: echo: echo 1) Backup profilu komunikatora AQQ echo 2) Backup profilu klienta poczty Thunderbird echo 3) Wyjście set/p "menu=>> " if %menu%==1 goto wapster if %menu%==2 goto thunderbird if %menu%==3 exit
if %menu%==1 goto thunderbird
Mówi o tym, iż w przypadku wybrania opcji 1 zrobimy tylko kopię klienta poczty Thunderbird. Natomiast w przypadku wybrania opcji 2 zrobimy całkowitą kopię wszystkich poprzedzających opcji.
if %menu%==3 exit
zapewnia nam wyjście ze skryptu.
Stworzenia zadania backupu
Teraz właśnie przyda się stworzona wcześniej lista z lokalizacją miejsc do zarchiwizowania. Liczba miejsc do zarchiwizowania jest równa liczbie „pojedynczych” akcji w menu.
Stwórzmy taką akcję. Oto luźny schemat takiej akcji:
"%peazaip%" u -t7z -m0=LZMA2 -mmt=on -mx9 -md=64m -mfb=273 -ms=64g "E:\Thunderbird.7z" "%APPDATA%"\Thunderbird
"%peazaip%" - zadeklarowana przez nas wcześniej zmienna z lokalizacja archiwizera 7z.
U - w przypadku istnienia archiwum zostanie ono zaktualizowane
-t7z - rozszerzenie pliku archiwum
-m0=LZMA2 – rodzaj metody
-mmt=on – wątki (Ogólna wielowątkowość)
-mx9 – stopien kompresji (Ultra)
-md=64m – rozmiar słownika
-mfb=273 - Słowo
-ms=64g – Stały blok
"E:\Thunderbird.7z" – lokalizacja docelowa kopii zapasowej i z nazwą pliku
"%APPDATA%"\Thunderbird - lokalizacja ścieżki do zarchiwizowania
Zadanie skompletowane
I dla klienta poczty dodajemy
:thunderbird cls "%peazaip%" u -t7z -m0=LZMA2 -mmt=on -mx9 -md=64m -mfb=273 -ms=64g "E:\Thunderbird.7z" "%APPDATA%"\Thunderbird pause goto menu
pause zatrzymuje skrypt i czeka na naciśnięcie jakiegokolwiek klawisza. Po jego naciśnięciu goto menu przywraca nas do menu „okna głównego” skryptu.
Robimy tak dla każdej wybranej przez nas lokalizacji pamiętając o tym, by uwzględniać ją w menu. Na końcu skryptu dodajemy deklarację dla wykonania wszystkich zadań:
:all cls "%peazaip%" u -t7z -m0=LZMA2 -mmt=on -mx9 -md=64m -mfb=273 -ms=64g "E:\Thunderbird.7z" "%APPDATA%"\Thunderbird pause goto menu
W całości skrypt wygląda tak:
@echo off @setlocal chcp 1250>nul set peazaip=L:\peazip\res\7z\7z.exe :menu cls echo Witaj w programie do backupu. Wybierz interesujący Cię backup do wykonania: echo: echo 1) Backup profilu komunikatora AQQ echo 2) Backup profilu klienta poczty Thunderbird echo 3) Wyjście set/p "menu=>> " if %menu%==1 goto wapster if %menu%==2 goto thunderbird if %menu%==3 exit :thunderbird cls "%peazaip%" u -t7z -m0=LZMA2 -mmt=on -mx9 -md=64m -mfb=273 -ms=64g "E:\Thunderbird.7z" "%APPDATA%"\Thunderbird pause goto menu :all cls "%peazaip%" u -t7z -m0=LZMA2 -mmt=on -mx9 -md=64m -mfb=273 -ms=64g "E:\Thunderbird.7z" "%APPDATA%"\Thunderbird ---RESZTA ZADAŃ-- pause goto menu
Na koniec zapisujemy nasz skrypt pod dowolną nazwą z rozszerzeniem .bat
Posumowanie
Tak oto stworzyliśmy prosty skrypt, niezabierający wiele miejsca, który daje nam możliwość stworzenia bardzo dostosowanego systemu tworzenia kopii zapasowej. Wystarczy uruchomić skrypt i już możemy w szybki sposób wykonać backup wybranej przez nas lokalizacji. Dodatkowo pozwala to zaoszczędzić miejsce i tak dla przykładu ze 180 MB lokalizacji możemy uzyskać ok 56 MB co daje aż ok 69‑70% oszczędności miejsca co myślę, ze jest dobrym wynikiem. W przypadku posiadania i używania przez nas PeaZip jako domyślnego archiwizera jest to jeszcze prostsze.
Oczywiście wadą jest to, ze skrypt musimy stworzyć sami jeżeli założymy, ze chcemy mieś tak „zaawansowany” system. Oczywiście w przypadku, gdy chcemy wrzucić wszystko do „jednego worka” możemy skorzystać z kreatora w programie i zapisać nasz skrypt wygenerowany automatycznie.
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.