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:
- kontakty
- sms/mms
- foto
- pliki w pamięci wewnętrznej słuchawy
- ustawienia wifi
- 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
wyświetli nam tabele w bazie
Chcąc podglądnąć zawartość tabeli wykorzystujemy jakże dobrze wszystkim znany select gwiazdka from table :)
Np.
.tables
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
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
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
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
- You must enable developer mode (tap 7 times on the build version in parameters) and install adb on your PC.
- adb shell pm list packages -f -3 [wylistuje wszystkie zainstalowane przez uzytkownika aplikacje, przydatne w przypadku tworzenia backupu pojedynczych aplikacji]
- 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