2012-09-04 15 views
21

私は、smb/mmsの受信箱全体をデバイスから引き出すためにadbを使用しようとしましたが、何らかの問題を抱えています。電話が根ざしていると私は、次のコマンドを試してみた:adb経由でフルSMS/mmsの内容をバックアップ

入力

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

出力

Permission denied 

入力

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

出力

The help menu 

私は私が試したものに似たコマンドでSMS受信トレイを引き出すことができると私は考えていませんか?私の命令に何が間違っているのであれば?/dataディレクトリの内容をフェッチする

おかげ

答えて

34

一つの方法は、最初にアクセスすることがどこかにsqliteのDBをコピーし、ホストにそこからコピーするadbのプルを使用することです。例えば

、次のコマンドは、(それが/data/data/com.android.providers.telephony/databases/mmssms.dbに含まれていると仮定して)SMSデータを取得するには、Androidブリッジを使用:

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 . 

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

アップ最後に、きちんと一時エリア:

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

は今、あなたは、プローブは、例えば、最も人気のある受信者を、見つけるためにあなたのホストマシン上でMMS/SMSデータベースを持っています

+2

偉大なステップバイステップの方法! - ルートアクセスが必要です... – bgs

3

@ Bonlenfumのおかげで、ルートのあるデバイス上のファイルやディレクトリをWindowsパス(ローカルまたはUNC)にコピーするための再利用可能なスクリプトが思い浮かびました。


編集:スペースを含むパスを持つバグを修正しました。


保存し、次のように: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 

使用法:あなたはあなたが引く前に、ADBのルートprivalagesを与える必要があり

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

そのデータベース

adb root 

adb pull /data/data/com.android.providers.telephony/databases/mmssms.db ./ 
関連する問題