2012-09-04 11 views
21

Próbowałem użyć adb do wyciągnięcia skrzynki odbiorczej sms/mms w całości z urządzenia, ale mam pewne problemy. Telefon jest zakorzenione i próbowałem następujące polecenia:Kopia zapasowa pełna zawartość SMS/mm za pomocą adb

Wejście

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

wyjście

Permission denied 

Wejście

./adb pull su /data/data/com.android.providers.telephony/databases/mmssms.db 

Wyjście

The help menu 

Czy błędnie myślę, że mogę przeciągnąć skrzynkę odbiorczą sms za pomocą poleceń podobnych do tych, które próbowałem? Jeśli można to zrobić, co jest nie tak z moim rozkazem?

Dzięki

Odpowiedz

34

Jednym ze sposobów, aby pobrać zawartość katalogu/danych jest najpierw skopiować db sqlite gdzieś, że jest dostępny, a następnie przy użyciu adb ciągnąć skopiować stamtąd do gospodarza.

Na przykład, następujące polecenia użyć android mostek chwycić danych SMS (przy założeniu, że zawarty jest w /data/data/com.android.providers.telephony/databases/mmssms.db)

adb shell 
$ mkdir /mnt/sdcard/tmp 
# su 
# cat /data/data/com.android.providers.telephony/databases/mmssms.db > /mnt/sdcard/tmp/mmssms.db 
# exit 
$ exit 
adb pull /mnt/sdcard/tmp/mmssms.db . 

teraz masz MMS/sMS bazy danych na komputerze hosta, sonda, aby znaleźć najbardziej popularne odbiorcy, na przykład:

sqlite3 -header mmssms.db 'select address from sms' | sort -n | uniq -c | sort -n 

Wreszcie posprzątać teren temp:

adb shell 
$ rm /mnt/sdcard/tmp/mmssms.db 
$ rmdir /mnt/sdcard/tmp 
$ exit 
+2

Świetna metoda "krok po kroku"! - potrzebujesz dostępu do roota ... – bgs

3

Dzięki odpowiedzi @ Bonlenfum udało mi się wymyślić skrypt wielokrotnego użytku do kopiowania dowolnego pliku/katalogu na urządzeniu zrootowanym do ścieżki Windows (lokalnej lub UNC).


Edit: Naprawiono błąd ze ścieżki zawierające spacje.


Zapisz jako następujące: adbSuPull.bat

@echo off 

SetLocal 
set RemotePath=%~1 
set LocalPath=%~f2 

if [%1] == [] goto Usage 
if "%~1" == "/?" goto Usage 
if not [%3] == [] goto Usage 

:: Replace " " with "\ " (escape spaces) 
set RemotePath=%RemotePath: =\ % 

set TimeStamp=%date:~-4,4%-%date:~-10,2%-%date:~-7,2%_%time:~-11,2%-%time:~-8,2%-%time:~-5,2% 

:: Replace spaces with zeros 
set TimeStamp=%TimeStamp: =0% 

if "%LocalPath%" == "" set LocalPath=adbSuPull_%UserName%_%TimeStamp% 
set SdCardPath=/mnt/sdcard 
set TempPath=%SdCardPath%/adbSuPull_temp_%TimeStamp%/ 

echo. 
echo Copying to temp location "%TempPath%" 
echo. 
adb shell "su -c 'mkdir -p %TempPath%; cp -RLv %RemotePath% %TempPath%'" 

echo. 
echo Copying to destination "%LocalPath%" 
echo. 
adb pull "%TempPath%" "%LocalPath%" 
if ErrorLevel 0 goto Cleanup 

:Error 
echo. 
echo Operation failed. Is USB Storage in use? 
echo. 
pause 
call Cleanup 
exit /b 1 

:Cleanup 
echo. 
echo Removing temp location "%TempPath%" 
echo. 
adb shell "rm -Rf '%TempPath%'" 
exit /b ErrorLevel 

:Usage 
echo. 
echo.adbSuPull ^<RemotePath^> [^<LocalPath^>] 
echo. 
echo Copies files/directories from a rooted Android device to a Windows path. 
echo Author: Ben Lemmond [email protected] 
echo. 
echo. RemotePath (required) Specifies the path to the file or directory on 
echo.       the rooted Android device. 
echo. 
echo. LocalPath (optional) Specifies the destination path. This can be a 
echo.       Windows local path (C:\folder) or a UNC path 
echo.       (\\server\share). 
echo.       Defaults to adbSuPull_%%UserName%%_%%TimeStamp%% 
echo.       in the current working directory. 
exit /b 1 

Zastosowanie:

adbSuPull <RemotePath> [<LocalPath>] 

Copies files/directories from a rooted Android device to a Windows path. 
Author: Ben Lemmond [email protected] 

    RemotePath (required) Specifies the path to the file or directory on 
         the rooted Android device. 

    LocalPath (optional) Specifies the destination path. This can be a 
         Windows local path (C:\folder) or a UNC path 
         (\\server\share). 
         Defaults to adbSuPull_%UserName%_%TimeStamp% 
         in the current working directory. 
3

Trzeba dać ADB privalages korzeniowych przed ciągnąć, że baza danych

adb root 

adb pull /data/data/com.android.providers.telephony/databases/mmssms.db ./ 
Powiązane problemy