尝试使用 adb 递归地将 android 文件拉入 windows pc 时出现特殊文件名问题
Problem with special filenames when trying to pull android files into windows pc recursively using adb
我想将 /data/data/foo
文件夹中的所有文件下载到我的 pc
。我正在使用 adb
连接我的 phone。
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
我做错了什么?
问题:
你做的是对的(命令是正确的),但问题来自你要完成的任务的性质。
您正在尝试将文件从 unix 设备(ext 文件系统)复制到您的 windows 电脑(使用 NTFS 文件系统)。这通常可以正常工作,但在某些情况下却不能:不同的文件系统对于哪些文件名有效有不同的规则,如果文件名在源中有效但在目标中无效,则无法复制它并保留其名称.
根据错误,我了解到您有一个名为 CADD
.xml
的文件(名称中包含换行符),该文件在您的 android 设备中有效,但在尝试复制时会出错进入您的 windows 文件系统(参见 Which file systems support newlines in file names?)。
可能的解决方案:
- 一个一个地复制文件并为导致问题的文件设置不同的目标名称(
CADD\n.xml
-> CADD.xml
)
- 获取一些
ext
文件系统(在您的磁盘中创建或从外部磁盘装载)并将文件复制到那里
- 将文件复制到您的 in-windows bash shell 使用的
ext
文件系统中(参见 How to Access Your Ubuntu Bash Files in Windows )
我想将 /data/data/foo
文件夹中的所有文件下载到我的 pc
。我正在使用 adb
连接我的 phone。
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
我做错了什么?
问题:
你做的是对的(命令是正确的),但问题来自你要完成的任务的性质。
您正在尝试将文件从 unix 设备(ext 文件系统)复制到您的 windows 电脑(使用 NTFS 文件系统)。这通常可以正常工作,但在某些情况下却不能:不同的文件系统对于哪些文件名有效有不同的规则,如果文件名在源中有效但在目标中无效,则无法复制它并保留其名称.
根据错误,我了解到您有一个名为 CADD
.xml
的文件(名称中包含换行符),该文件在您的 android 设备中有效,但在尝试复制时会出错进入您的 windows 文件系统(参见 Which file systems support newlines in file names?)。
可能的解决方案:
- 一个一个地复制文件并为导致问题的文件设置不同的目标名称(
CADD\n.xml
->CADD.xml
) - 获取一些
ext
文件系统(在您的磁盘中创建或从外部磁盘装载)并将文件复制到那里 - 将文件复制到您的 in-windows bash shell 使用的
ext
文件系统中(参见 How to Access Your Ubuntu Bash Files in Windows )