博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
adb上使用cp/mv命令的替代方法(failed on '***' - Cross-device link解决方法)
阅读量:6419 次
发布时间:2019-06-23

本文共 1322 字,大约阅读时间需要 4 分钟。

今天把玩手头的那部Android手机时碰到一个问题,即因为权限问题无法将文件复制到/system/和/data/分区中,经过一番折腾后,算是解决了,在此记录一笔。本方所涉及到的命令输入,均用斜体字表示。

情况是这样的:该台Android手机不提供adb root的权限,但又不能装破解root权限的软件,若要往Android手机的/system/和/data/分区下拷一些文件, 是否有其它方法可以将文件复制到上述的分区中? 当然,手机里的文件管理器没有提供将文件从存储卡上复制到这两个分区的功能,如果有哪个Android文件管理器提供类似的功能,在此也因为不能下载安装而做罢。

幸好,发现手机有预留方法可以使/system和/data分区获得写权限,而且也可以在adb shell里执行su命令以切换用户。能执行的su加上可写的分区,意味着该分区的杀剐均在我们的掌控之下了(如对手机内置的运营商定制软件不满,那就杀之……)。废话少说,假如要将test.mp3文件拷贝到/system/media/audio/目录下,可以按如下步骤执行:

1. 将目标文件test.mp3复制到存储卡上, /sdcard/test.mp3; 

2. 打开PC机上的命令行,输入adb shell并按回车进入Android系统命令行模式;

3. 输入cd system/media/audio并回车;

4. 输入cat /sdcard/test.mp3 > test.mp3并回车。

当第4步完成后,在命令行下输入命令ls应该就能看到test.mp3文件了。当然,步骤3也可省略,在adb shell里,直接敲入命令 cat /sdcard/test.mp3 >/system/media/audio/test.mp3效果也是一样的。

因为Andorid命令行里没有cp命令(我一直未能明白为何不将该命令集成进去?),但是有mv这一条命令,那为什么不直接输入mv /sdcard/test.mp3 /system/meida/audio/test.mp3呢?好,那我们试一下该命令,得到答复是:“failed on '/sdcard/test.mp3' - Cross-device link”, 也就是说mv命令不允许将存储卡中的文件复制到/system/或/data/分区中,因为两者被认为是在不同的设备上。所以步骤4采用cat命令,查一下cat的用法:cat [选项]... [文件]... ,其作用是将[文件]或标准输入组合输出到标准输出。平常工作时偶尔会用到cat命令去显示文本文件的内容,然后又想到了重定向符'>',所以两者一结合,就自然则然地想到是否可以通过将cat的文件输出到指定位置来代替cp的功能?通过尝试发现确实可以,不过我不清楚Linux系统下cp命令的实现细节,回头去查一下看。前已叙及有了su命令及可写的分区,基本可以为所欲为了,所以曲线将文件复制到/system/或/data/分区后,如果文件权限/用户名/组不符合,就可以通过chmod和chown命令进行更改。当然,如果/system/没有写权限,那本记录所讲述的方法就不适用了。

转载地址:http://unlra.baihongyu.com/

你可能感兴趣的文章
Spark学习笔记之相关记录
查看>>
Node 版本管理
查看>>
input的行数自动增减
查看>>
.pyc 想到的一些问题
查看>>
k个最大的数及变种小结
查看>>
【5+】跨webview多页面 触发事件(二)
查看>>
微信开源mars源码分析1—上层samples分析
查看>>
技术攻略】php设计模式(一):简介及创建型模式
查看>>
(十五)java多线程之并发集合ArrayBlockingQueue
查看>>
js学习笔记
查看>>
JS学习笔记——闭包
查看>>
MobX
查看>>
Netty 4.1 源代码学习:线程模型
查看>>
Diomidis Spinellis:有效的调试
查看>>
从后端到前端的转变:如何选择框架?
查看>>
Git 2.19 对Diff、Branch和Grep等做了改进
查看>>
Steve Thair谈DevOps on Windows的演变与面临的挑战
查看>>
扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
查看>>
逃离方法牢笼
查看>>
《Spark GraphX in Action》书评及作者访谈
查看>>