Przyznam się, że praktycznie każdy telefon, jeśli tylko była taka możliwość (nie tylko z Androidem, a nawet duże, dużo wcześniej…) miałem w jakiś sposób modyfikowany – przynajmniej jeśli chodzi o oprogramowanie. A z racji tego, że telefon od dawna traktuje również jako narzędzie pracy, istotna dla mnie była możliwość wykonywania regularnej kopii zapasowej – najlepiej całego telefonu, wraz z oprogramowaniem systemowym i ustawieniami. W ostatnich latach właściwie wszystkie moje telefony podstawowe działają pod kontrolą systemu Android, a więc realizacja tego zadania wiązała się ze zrootowaniem telefonu i wgraniu alternatywnego recorvery, m.in. w celu wykonywania pełnych kopii zapasowych. Pierwszym – i jak do tej pory jedynym – telefonem który działa tak jak producent chciał będzie Motorola Moto G, co może być pewnym paradoksem, bo akurat w przypadku tego telefonu producent oferuje możliwość pełnego odblokowania – nie tylko recorvery, root, ale i bootloadera…

Android 4+: kopia zapasowa (BackUp)

Brak zdjętych blokad nie oznacza, że zrezygnowałem z tworzenia regularnych kopii zapasowych – wręcz przeciwnie, choć zmieniły się trochę metody. Część danych jest synchronizowana „z chmurą” (np. zdjęcia, kalendarz, kontakty), część na samym urządzeniu lub na udostępnionych zasobach sieciowych (np. SMSy,).

Android Debug Bridge i tryb debugowania

Wprawdzie ADB, jak i tryb debugowania w urządzeniach z Androidem występuje od dawna – korzystają z tego m.in. programy typu Link2SD, to chyba dopiero od wersji 4.0 pojawiła się relatywnie prosta metoda wykonywania kopii zapasowej za pomocą tego narzędzia, a tym samym odpadła jedna wada urządzeń bez odblokowanego konta root.

Tryb debugowania

Pierwsze co należy zrobić – nie tylko na potrzeby kopii zapasowej, ale i dla „co bardziej zaawansowanych aplikacji” – to aktywacja trybu debugowania w naszym urządzeniu z Androidem:

  • Ustawienia > Opcje programisty: Debugowanie USB

Jeśli nigdy nie korzystaliście z opcji programisty, jest duża szansa, że ta pozycja jest ukryta w menu Waszego telefonu. By ją aktywować, należy wybrać:

  • Ustawienia > Informacje o telefonie

Gdzie „gdzieś na samym” znajdziecie pozycję oznaczoną jako „Numer kompilacji” – teraz wystarczy kilkukrotnie wybrać tą pozycję, by odblokować „Opcje programisty”. W trakcie kolejnych kliknięć zapewne nic się nie będzie działa, a przynajmniej nie przez pierwsze 2-3 naciśnięcia. Później pojawi się komunikat w stylu:

Jeszcze 2 razy i zostaniesz programistą

Co oczywiście czynimy ;-)

Instalacja ADB na komputerze

Kolejny niezbędny element, to instalacja ADB na komputerze, do którego podłączymy telefon. Jeśli instalowaliście dodatkowe oprogramowanie od producenta telefonu, jest spora (no, może „jakaś”) szansa, że niezbędne oprogramowanie macie już zainstalowane na komputerze.

Android Studio

Osobiście korzystam z ADB instalowanego razem z Android Studio, czyli pakietem wspierającym tworzenie aplikacji na urządzenia z Androidem, a przy okazji rozwiązuje to w. problem braku aplikacji ADB w systemie. Trochę z pamięci piszę, ale wydaje mi się, że wystarczy pobrać pakiet w opcji „SDK Tools Only”.

Kopia zapasowa z pomocą ADB (Android Debug Bridge)

Przygotowania za nami, tak więc możemy przystąpić do tworzenia kopii zapasowej naszego urządzenia – za pomocą kabla USB (USB <-> microUSB) podłączamy telefon do komputera i uruchamiamy (na komputerze) wiersz poleceń.

Od razu warto przejść do katalogu, w którym znajduje się aplikacja ADB, np.:

cd "C:\Program Files (x86)\Android Studio\sdk\platform-tools\"

Oraz – na wszelki wypadek – restartujemy serwer/aplikację:

adb kill-server
adb start-server

Na koniec „ostatnich przygotowań” sprawdzamy, czy nasze urządzenie jest widoczne w systemie:

adb devices

android_adb_backup01

Tworzenie kopii zapasowej

Podstawowym poleceniem tworzenia kopii zapasowej jest:

adb backup -f nazwa_pliku

Choć warto tu jeszcze uwzględnić dodatkowe parametry, np.:

  • apk | noapk – czy pliki instalacyjne (APK) aplikacji mają zostać dodane do kopii
  • shared | noshared – czy również pliki z karty SD/microSD mają znaleźć się w pliku kopii
  • system | nosystem – czy uwzględnić w kopii również aplikacje systemowe
  • all – wszystkie aplikacje

I tak przykładowe polecenie może wyglądać np. tak:

adb backup -apk -shared -all -system -f g:\plik_kopii_zapasowej

Pełną listę dostępnych opcji znajdziecie w dokumentacji narzędzia, oraz w pomocy:

adb help

Kopia zapasowa konkretnych aplikacji

Można również dokonać kopii zapasowej wybranych aplikacji. W tym celu można najpierw wygenerować sobie listę wszystkich zainstalowanych pakietów/aplikacji:

adb shell pm list packages -f >> c:\lista_zainstalowanych_aplikacji.txt

Lub:

adb shell pm list packages -3 >> c:\lista_zainstalowanych_aplikacji_uzytkownika.txt
adb shell pm list packages -s >> c:\lista_zainstalowanych_aplikacji_systemowych.txt

I gdy już znamy nazwę pakietu:

adb backup -f nazwa_pliku_kopii.bak nazwa.pakietu.aplikacji

lub:

adb backup -apk -f nazwa_pliku_kopii.bak nazwa.pakietu.aplikacji

Hasło kopii zapasowej

W momencie wysłania do urządzenia polecenia wykonania kopii zapasowej na ekranie tego urządzenia pojawi się ekran ze stosowną informacją, oraz prośbą o wpisanie ew. hasła kopii zapasowej (ustawionego wcześniej, w innym przypadku zostawcie puste):

android_adb_backup02

Hasło w urządzeniu ustawiacie w menu:

  • Ustawienia > Opcje programisty: Hasło kopii zapasowych
Jeśli Wasze urządzenie ma aktywną opcję szyfrowania (urządzenie szyfrowane), to hasłem kopii zapasowych zawsze będzie hasło/kod odblokowania – niezależnie od tego, co ustawicie w pozycji „hasło kopii zapasowych”.

Przywracanie danych z kopii zapasowych

Jeśli zajedzie potrzeba przywrócenia danych z kopii zapasowej, wystarczy ponownie podłączyć do komputera telefon i wykonać polecenie:

adb restore plik_kopii_zapasowej

Android Backup Extractor

Czasem może zajść potrzeba „dobrania się do plików kopii zapasowej”, ale bez wgrywania jej do urządzenia. Tu z pomocą przychodzi nam m.in. aplikacja Android Backup Extractor, dzięki której zmienimy plik bezpośrednio w archiwum tar, które można już rozpakować dowolnym programem obsługującym ten format archiwów.

Program do działania wymaga Javy, ale można chyba założyć, że zapewne macie Javę zainstalowaną w systemie (zwłaszcza gdy „kombinujecie przy Androidzie”).

Kopia zapasowa z hasłem

Jeśli Wasz plik kopii zapasowej jest zabezpieczony hasłem, zapewne będziecie potrzebowali jeszcze paczki:

Znajdziecie w niej 2 pliki (3, jeśli liczyć plik readme.txt ;-)):

  • local_policy.jar
  • US_export_policy.jar

które należy skopiować do odpowiedniego katalogu:

  • C:\Program Files\Java\jdk1.7.0_60\jre\lib\security\
  • C:\Program Files\Java\jre7\lib\security\
  • C:\Program Files (x86)\Java\jdk1.7.0_60\jre\lib\security\
  • C:\Program Files (x86)\Java\jre7\lib\security\

Ew. w innych niż Windows systemach będzie to odpowiednio:

  • Linux: /usr/local/jdk1.7/jre/lib/security/
  • BSD: /usr/lib/jvm/java-7-openjdk-*/jre/lib/security/
  • OS X: /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/jre/lib/security/
Są to przykładowe ścieżki, które podaje za instrukcją obsługi programu – w większości przypadków będą one wyglądały inaczej, zależnie od wersji Java zainstalowanej w Waszym systemie.

Podstawowe polecenia

Korzystanie z programu jest proste, sprowadza się do 4 podstawowych komend:

  • Informacje o pliku: java -jar abe.jar info [plik_kopii_zapasowej] [hasło (opcjonalnie)]
  • Konwersja na archiwum TAR: java -jar abe.jar unpack  [plik_kopii_zapasowej] [pliku_archiwum.tar] [hasło (opcjonalnie)]
  • Konwersja na archiwum Android: java -jar abe.jar pack  [pliku_archiwum.tar] [plik_kopii_zapasowej] [hasło (opcjonalnie)]
  • pack-kk: java -jar abe.jar pack-kk [pliku_archiwum.tar] [plik_kopii_zapasowej] [hasło (opcjonalnie)]

Ostatnia opcja (pack-kk) dotyczy archiwum dla Androida w wersji KitKat 4.4.3+

Kopia zapasowa plików bazy danych

Warto jeszcze wspomnieć o tym, że jak mamy dostęp do konta root w telefonie, to możemy kopię zapasową niektórych elementów wykonać ręcznie, kopiując z jakiegoś menedżera plików interesujące nas pliki.

Korzystasz z Androida 4.4 lub nowszego?
Zobacz też koniecznie: Aplikacja SELinuxModeChanger, czyli prosta i skuteczna zmiana stanu SELinuxa w Androidzie

Zasada ogólna:

/data/data/com.android.providers.*/databases/*

I tak np. SMS i MMS:

/data/data/com.android.providers.telephony/databases/mmssms.db

Kontakty:

/data/data/com.android.providers.contacts/databases/contacts2.db

Kalendarz:

/data/data/com.android.providers.calendar/databases/calendar.db

Lista APNów:

/data/data/com.android.providers.telephony/databases/telephony.db

Ustawienia:

/data/data/com.android.providers.setings/databases/setings.db

W nowszych wersjach systemu (5, 6, 7…), z racji wprowadzenia obsługi użytkowników zmieniła się lokalizacja. Np. dla SMSów będzie to plik:

/data/user_de/0/com.android.providers.telephony/database/mmssms.db
(!) Zgłoś błąd na stronie
Pomogłem? To może postawisz mi wirtualną kawę?
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Patryk