尝试使用adb递归将android文件拖入Windows pc时出现特殊文件名的问题

时间:2019-02-13 14:22:47

标签: android linux bash command-line adb

我想将所有文件从/data/data/foo文件夹下载到我的pc。我正在使用adb连接手机。

cd /data/data/foo
ls -R
.:
    cache
    databases
    files
    lib
    shared_prefs

./cache:

./databases:
    errors.db
    errors.db-journal
    logs.db
    logs.db-journal

./files:
cache_state.info

./shared_prefs:
LANG_CODE.xml
PPP.xml
CADD
.xml

要下载我正在使用的文件:

adb pull "/data/data/foo" %USERPROFILE%/foo

这是回应:

pull: building file list...
skipping special file 'lib'
pull: /data/data/foo/files/cache_state.info -> C:\Users\root/foo/files/cache_state.info
pull: /data/data/foo/shared_prefs/CADD
.xml -> C:\Users\root/foo/shared_prefs/CADD
.xml
cannot create 'C:\Users\root\foo\shared_prefs\CADD
.xml': No such file or directory

实际上,仅复制了此内容

foo/files/cache_state.info
foo/shared_prefs

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

问题:

您的操作正确(命令正确),但是问题出在您要实现的任务的性质上。

您正在尝试将文件从Unix设备(ext文件系统)复制到Windows pc(带有NTFS文件系统)中。这通常可以正常工作,但在某些情况下却无效:不同的文件系统对哪些文件名有效具有不同的规则,并且如果文件名在源中有效但在目标中无效,则无法复制它来保留其名称

从错误中我了解到您有一个名为CADD .xml的文件(名称中包含换行符),该文件在您的android设备中有效,但是在尝试将其复制到Windows文件系统时会出现错误(请参见Which file systems support newlines in file names?

可能的解决方案:

  • 一张一张地复制文件,并为引起麻烦的文件设置一个不同的目的地名称(CADD\n.xml-> CADD.xml
  • 获取一些ext文件系统(在磁盘中创建或从外部磁盘挂载)并在其中复制文件
  • 将文件复制到Windows bash shell使用的ext文件系统中(请参见How to Access Your Ubuntu Bash Files in Windows