Backup danych słuchawy z androidem

Backup danych słuchawy z androidem

Kupiłem jakieś padło na zgredoidzie, a że nie chce mi się wszystkiego instalować i ustawiać na nowo to będę sprytny, zrobię backup ze starej słuchawy, wrzucę na nową i fajrant.

Chuja tam fajrant. Gówniany gogiel, jego zgredoid i magiczne kombinacje aby przerzucić jakieś dane bez pośredniczenia szpiegusa googla przez jego chmurne usługi.

Na kupionej paści od razu wrzuciłem lineage'a 11, choć motoruwa i tak zapieprza jak wściekła. Po namyśle a bardziej i z ciekawości postawiłem zgredojda 12. Ruszył od strzała, bo co by miał nie zadziałać?
Przyszedł czas na przerzut danych i apek. LOS inkorporowal seedvault i ta porażka programistyczna ma robić automatycznie backup. Zrobiłem zatem kopię, przerzuciłem na nową słuchawę i co?

igównoTM

Seedvault nie widzi backupu i go z pewnością nie zobaczy. Podobno gogiel znowu wyciął coś w api. Już nawet nie wkurzało mnie to, że wcięło mi hasło generowane z 12 słów i musiałem cały ten proces powtórzyć po wygenerowaniu nowej kombinacji hasła. Chrzanić to, jak zwykle trzeba zakasać rękawy i dłubać. Przecież chce mi się, bo jak inaczej?

No to po kolei z tym szajsem.

Można zrobić backup całego tałatajstwa komendą adb backup, ale zazwyczaj ominie to dane aplikacji systemowych i będziemy zdziwieni że po przywróceniu kopii zapasowej wywieje kontakty, smsy itp.
Bo ich kopii ta metoda po prostu nie utworzy.

Potrzebne jest przygotowanie kopii zapasowych kilku rzeczy. Brzmi trywialnie, ale jak się nad tym zastanowić to już tak wesoło nie ma. Głupi ten co liczy, że jednym kliknięciem wszystko się magicznie utworzy i przywróci po resecie albo zmianie słuchawy. Jest taki titanium backup, ale wymaga roota, któren z kolei do niczego mi nie jest potrzebny a skomplikowałby więcej spraw niż ułatwił.

Tak czy owak korzystanie z pierdyliarda aplikacyjek do wszystkiego jest dla mnie siermiężne, czasochłonne i nie daje żadnej 100% pewności powodzenia z tworzeniem i przywracaniem kopii zapasowych. Poza tym to moje dane, którymi nie lubię się dzielić a i tak wszystko cokolwiek w zgredoidzie jest zainstalowane, próbuje chapać jakie tylko dane się uda.

Krótka lista backupowego todo:

  1. kontakty
  2. sms/mms
  3. foto
  4. pliki w pamięci wewnętrznej słuchawy
  5. ustawienia wifi
  6. dane aplikacji

KONTAKTY

Najszybciej, najłatwiej i bezproblemowo jest wyeksportować kontakty z poziomu aplikacji "kontakty" do pliku .vcf Sprawdzone, działa import/eksport i na tym powinna się kończyć zabawa. Ale można przecież ściągnąć bazę kontaktów zamiast polegać na imporcie który psuje znaki diakrytyczne kiedy tylko człowiek liczy że choć raz coś zadziała ლ(ಠ益ಠლ)

btw. można podglądnąć bazę kontaktów poprzez adb shell content query --uri content://com.android.contacts/contacts/ oraz policzyć ile ich mamy dodanych na słuchawie content query --uri content://com.android.contacts/contacts/ | wc -l

Lub podglądnąć tabele w bazie poprzez sqlite3 nazwabazy.db .tables wyświetli nam tabele w bazie Chcąc podglądnąć zawartość tabeli wykorzystujemy jakże dobrze wszystkim znany select gwiazdka from table :) Np. select * from raw_contacts;

Dobra, bo robimy backup a nie przegląd podstaw grzebania w bazach sql. Wychodzimy z sqlite3 poprzez ctrl+d.
Pewnie myślałeś że ctrl+c? :>

Komu jest potrzebny jeszcze callog, znajdzie obydwie bazy w /data/user/0/com.android.providers.contacts/databases są tam calllog.db oraz contacts2.db
(calllog.db calllog.db-journal contacts2.db profile.db profile.db-journal)

I te pliki zaciągamy komendą adb pull <ścieżka do pliku na słuchawie> <ścieżka do zapisu na kompie> wyślemy odwracając ścieżki adb push <ścieżka na słuchawie> adb push calllog.db /data/user/0/com.android.providers.contacts/databases/

To jeszcze nie wszystko, wrzucaliśmy jako root więc jeśli baza kontaktów i call log nie będzie dostępny musowa będzie zmiana właściciela i grupy użytkowników z dostępem do pliku w tym celu podglądamy jaki został utworzony IDentyfikator (a tym samym grupa użytkowników) listując inne pliki w katalogu adb shell "/data/user/0/com.android.providers.contacts/databases ls -la" kopiujemy nazwę usera i zmieniamy właściciela komendą chmod właściciel:grupa adb shell "chmod u0_a61:u0_a61 /data/user/0/com.android.providers.contacts/databases/contacts2.db" chmod może nie zadziałać w zgredoidzie 11-12, więc zmieniamy go komendą chown (chown user:group)


SMS

sposobów jest kilka, począwszy od eksportu wiadomości z poziomu używanej na telefonie aplikacji lub użycia aplikacyjek firm trzecich. Warto zrobić oczywiście backup wewnątrz aplikacji sms jeśli takową oferuje (chomp sms nie oferuje) ale potem trzeba się będzie pałować z kopiowaniem pliku na komórę i klikaniem w aplikacji. Nie chce mi się. Jak już odpalę ADB to będę leciał z plikami metodą copy-paste'a.

<poniższe info przenieść do kontaktów bo tam będzie potzebne> Tym razem trzeba się awansować do superusera żeby cokolwiek wyciągnąć. Łączymy do słuchawy

adb devices

a następnie łączymy jako root (wymaga włączenia debugowania jako root w opcjach programisty)

adb root

wymaga to nieco refleksu i potwierdzenia trybu debugowania na telefonie. Sprawdzając jeszcze raz tą samą komendą powinna wyskoczyć informacja potwierdzająca

adbd is already running as root

Teraz możemy korzystać ze wszelkich dobrodziejstw i pyskówa zgredoida typu adb: error: failed to stat remote object 'cośtam.db': Permission denied nie powinna dawać się we znaki.

W sieci trafimy na nieco zdeaktualizowane informacje, bowiem dane użytkownika nie są przechowywane już w katalogu /data/data/ tylko /data/user_de/0/

Choć interesują mnie tylko smsy i mmsy to sprawa się komplikuje, bo plików jest kilka i wiadomości dotyczą również obsługi dualsim. Zaciągamy zatem /data/user_de/0/com.android.providers.telephony/databases/telephony.db /data/user_de/0/com.android.providers.telephony/databases/mmssms.db Oraz wszystko z katalogu /data/user_de/0/com.android.providers.telephony/app_parts bo siedzą tutaj obrazy mmsów

Wciągamy zatem pliki oraz całą zawartość katalogu na PieCa. Na szczęście podając ścieżkę do katalogu ADB zaciągnie z niego wszystko rekursywnie, więc nie trzeba kombinować ze skryptowaniem, czy pakowaniem wszystkiego co się w nim znajduje by potem zaciągnąć archiwum. Swoją drogą trafiłem na świetny przykład rekursywnego zaciągania danych - gdzieżby indziej niż - na stackoverflow:
https://stackoverflow.com/questions/10050925/how-do-i-adb-pull-all-files-of-a-folder-present-in-sd-card

Zaciągamy w końcu te pliki na PieCyk adb pull c:\backup\

adb pull /data/user_de/0/com.android.providers.telephony/databases/mmssms.db E:\software\mobile\motorolag5s\Backup-before-update\mmssms.db

Krótko na temat: adb pull "/sdcard/directory1" zaciąga rekursywnie wszystko co siedzi w owym directory1

adekwatnie trzeba będzie potem wepchnąć z powrotem te pliki używając adb push c:\backup\mmsms.db /data/user_de/0/com.android.providers.telephony/databases/mmssms.db adb push mmssms.db /data/user_de/0/com.android.providers.telephony/databases/ adb push telephony.db /data/user_de/0/com.android.providers.telephony/databases/

Nie wiem jak będzie sprawa wyglądać z katalogiem zawartości mms. Mianowicie czy w drugą stronę ADB również rekursywnie przeleci katalog i wrzuci wszystko, czy trzeba będzie kombinować. Najwyżej ZIPnę zawartość, przepchnę tego .zipa do katalogu i rozpakuję go spod adb shell

Tyle w kwestii backupu sms.

A gdy już wyczaiłem to i owo metodą prób, i błędów oraz okupiłem tymczasową utratą wszystkich wiadomości ostatnim linkiem pod który wszedłem już z głupia frant był ... praktycznie gotowy tutek na reddicie.
https://www.reddit.com/r/LineageOS/comments/ekhv18/howto_transfer_message_history_for_lineageos/
wpizdu ლ(ಠ益ಠლ)

Tyle razy sobie powtarzałem żeby położyć pałę na wyszukiwarkę sroogle bo nic co jest potrzebne na cito w tym zalewie gnojówy nie da się od razu znaleźć.


FOTO

Tutaj bez kombinacji, podpinamy słuchawę do kompa i kopiujemy zawartość katalogu DCIM


pliki w pamięci wewnętrznej słuchawy

Jw. kopiujemy ręcznie po kablu USB. Żadnych kruczków, żadnych sztuczków.


ustawienia wifi

wszystkie dane o skonfigurowanych sieciach wifi w telefonie znajdują się w pliku /data/misc/wifi/WifiConfigStore.xml zawierają hasła w plain text więc nie dzielmy się nim zaciągamy plik do backupu standardowo

adb pull /data/misc/wifi/WifiConfigStore.xml bez podania sciezki plik zostanie zapisany w aktualnym katalogu z którego wywołujemy komendę

adb push WifiConfigStore.xml /data/misc/wifi/

edit 10.2022
od zgredoida 11 zmienia się ścieżka do pliku wificonfigstore.xml

/data/misc/apexdata/com.android.wifi/WifiConfigStore.xml


aplikacje

Tworzymy backup: adb backup [-f ] [-apk|-noapk] [-shared|-noshared] [-all] [-system|nosystem] [<packages...>]

backup wszystkiego adb backup -f C:\temp\backupappsdatas.ab -all -apk -nosystem lub jak jesteśmy już w katalogu docelowyn adb backup -apk -noshared -all -nosystem -f ./backup.ab

adb backup -f C:\temp\allappswithdata.ab -all -apk -nosystem

-f - podanie ścieżki i nazwy pliku
-all - wszystkie appsy
-apk - włącznie z app data
-nosystem - chrzanić aplikacje systemowe
-shared | -noshared
Choose whether to backup the device's shared storage (SD card content) or not to. To enable it use -shared, and to disable it use -noshared. The default is -noshared. As stated above, this option doesn't work very well, and you are strongly advised to backup the SD card content by yourself

backup 1 appki
adb backup -f “c:\temp\myapp.ab” -apk com.app.name backup aplikacji zostanie zrzucony do pliku .ab, nie instalatora aplikacji .apk

Na słuchawie wyskoczy potwierdzenie tworzenia backupu. Możemy go również zabezpieczyć hasłem. koniec tworzenia kopii zapasowej potwierdzi komunikat na komórze

przywracanie backupu: adb restore C:\temp\android\backupappsdatas.ab lub jeśli jesteśmy już w katalogu adb restore ./backup-noshared.ab potwierdzamy przywracanie na komórze i fajrant. Po przywróceniu kopii należy uruchomiać aplikacje i zezwalać ponownie na dostęp do określonych funkcji telefonu.


Dodatkowe elementy i przydatne opcje

  1. You must enable developer mode (tap 7 times on the build version in parameters) and install adb on your PC.
  2. adb shell pm list packages -f -3 [wylistuje wszystkie zainstalowane przez uzytkownika aplikacje, przydatne w przypadku tworzenia backupu pojedynczych aplikacji]
  3. Also to note, this will not back up SMS messages, so if you're concerned about those, you may want to look into an alternative application to back up SMS.

jak ściągnąć appki i potem je zainstalować jest opisane tutaj https://medium.com/@adhil_munna/batch-backup-and-install-apps-on-android-using-pc-f988c6e135d5

Z ANGIELSKIEGO: https://gist.github.com/AnatomicJC/e773dd55ae60ab0b2d6dd2351eb977c1

trochę dupowato bo dotyczy to konsoli linuxa do powershella jest sporo dupienia i nie wymyśliłem nic co by było jednolinijkowe

FETCH APPLICATIONs APK

To get the list of your installed applications: adb shell pm list packages -f -3

If you want to fetch all apk of your installed apps: for APP in $(adb shell pm list packages -3 -f) do adb pull $( echo ${APP} | sed "s/^package://" | sed "s/base.apk=/base.apk /").apk done To fetch only one application, based of listed packages results:

adb pull /data/app/org.fedorahosted.freeotp-Rbf2NWw6F-SqSKD7fZ_voQ==/base.apk freeotp.apk

BACKUP APPLICATIONS DATAS

To backup one application, with its apk: adb backup -f freeotp.adb -apk org.fedorahosted.freeotp

To backup all datas at once: adb backup -f all -all -apk -nosystem

To backup all datas in separated files: for APP in $(adb shell pm list packages -3) do APP=$( echo ${APP} | sed "s/^package://") adb backup -f ${APP}.backup ${APP} done

RESTORE APPLICATIONS

First, you have to install the saved apk with adb: adb install application.apk

Then restore the datas: adb restore application.backup


Nie chce mi się tłumaczyć, prosta angielszczyzna jest do zrozumienia w locie. I tyle, nie ma więcej kombinacji, po prostu copy>paste

ahhh, przydatna sprawa gdy ma się podpięte dwie słuchawy do kompa i ADB będzie się pluło o to listujemy najpierw urządzenia

adb devices

i używamy identyfikatora urządzenia przywołując każdą komendę, np: adb -s ZY323KZNTZ