2012-09-04 33 views
21

我一直在尝试使用adb从设备中完整地将短信/彩信收件箱拉出来,但遇到了一些麻烦。这款手机是植根我尝试了下面的命令:通过adb备份完整的短信/彩信内容

输入

./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 

我是否有缺陷,我认为我可以通过类似于我尝试过的命令来拉取短信收件箱?如果可以做到,我的命令有什么问题?

感谢

回答

34

的一种方式,以获取/ data目录的内容是先复制sqlite的分贝的地方,可以访问,然后利用亚洲开发银行将其从那里复制到主机。

例如,下面的命令使用机器人桥抢SMS数据(假设它被包含在/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 . 

现在你有MMS/SMS数据库的主机上,探头寻找最流行的收件人,例如:

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 
+2

伟大的一步一步的方法! - 需要root权限... – 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 

用法:

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

你必须给亚行根privalages你拉在此之前数据库

adb root 

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