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…
Spis treści w artykule
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
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):
Hasło w urządzeniu ustawiacie w menu:
- Ustawienia > Opcje programisty: 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/
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.
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
- Wakacje składkowe ZUS a zawieszenie działalności gospodarczej, czyli uważaj, bo być może nie będziesz mógł skorzystać (w 2024) - 1970-01-01
- Przykładowy kalkulator wyceny usługi druku 3D, czyli nie tylko materiał się liczy - 1970-01-01
- Home Assistant 2024.10, czyli nowa karta „nagłówek” i niedziałający TTS w ramach usługi Google Cloud - 1970-01-01
Czy ta komenda adb backup pozwoli zachować też pliki z pamięci telefonu i dane aplikacji tj. listę tagów w Shazamie, zakładki w przeglądarce itp.?
Teoretycznie tak (z przełącznikiem, by kopiować dane), ale każdy programista aplikacji może dodać do niej „znacznik”, który blokuje taką możliwość. Niby pożyteczna rzecz, bo są takie aplikacje, gdzie faktycznie lepiej nie pozwalać na tego typu kopie, ale niestety twórcy aplikacji bardzo często nadużywają tego parametru, i wciskają go do swojej aplikacji, choć nie ma ku temu żadnej logicznej przesłanki.