adb上使用cp/mv命令的替代方法(failed on '***' - Cross-device link解决方法)
今天把玩手头的那部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/没有写权限,那本记录所讲述的方法就不适用了。
adb上使用cp/mv命令的替代方法(failed on '***' - Cross-device link解决方法)的更多相关文章
- eclipse上一次没有正确关闭,导致启动的时候卡死错误解决方法
关于 eclipse启动卡死的问题(eclipse上一次没有正确关闭,导致启动的时候卡死错误解决方法),自己常用的解决方法: 方案一(推荐使用,如果没有这个文件,就使用方案二): 到<works ...
- IIS上虚拟站点的web.config与主站点的web.config冲突解决方法 分类: ASP.NET 2015-06-15 14:07 60人阅读 评论(0) 收藏
IIS上在主站点下搭建虚拟目录后,子站点中的<system.web>节点与主站点的<system.web>冲突解决方法: 在主站点的<system.web>上一级添 ...
- WordPress Import 上传的文件尺寸超过php.ini中定义的upload_max_filesize值-->解决方法。
參考一: WordPress Importer上传导入备份文件时遇到这样一个错误,提示"上传的文件尺寸超过 php.ini 中定义的 upload_max_filesize 值". ...
- 【java】javac命令在win10不可用,提示javac不是内部或外部命令,也不是可运行的程序【解决方法】
JDK安装成功,并且配置了环境变量,java命令正常可以使用,但是javac命令提示 不是内部或外部命令,也不是可运行的程序 解决方法: 产生这个问题的原因,是因为环境变量的配置中,Path中配置使用 ...
- ‘mysql’不是内部或外部命令,也不是可运行的程序--解决方法
一.场景 在cmd命令窗口下操作mysql时,提示mysql不是内部或外部命令,也不是可运行的程序. 二.原因 有3种原因: 1.没有装mysql 2.没有配置mysql环境变量 3.cmd命令窗口没 ...
- Win2008上.NET4.0部署出错HTTP 错误 500.21 - Internal Server Error的解决方法
原因:在安装Framework v4.0之后,再启用IIS,导致Framework没有完全安装 解决:开始->所有程序->附件->鼠标右键点击“命令提示符”->以管理员身份运行 ...
- 命令行下执行python找不包的解决方法
首先我们来了解一下,为什么会出现这样的问题,以及python搜索包的机制是怎么样的 1.为什么会出现这样的问题? 包是向下搜索机制. 2.为什么ide中执行没有报找不到包的问题? python搜索机制 ...
- DOS命令(系统错误5,拒绝访问)的解决方法
在用DOS命令启动MySQL服务时,出现(系统错误5,拒绝访问)的错误提示,这是由于我们操作的权限不足造成的,需要以管理员身份启动,解决问题方法如下: 1."Windows+S"- ...
- python程序在命令行执行提示ModuleNotFoundError: No module named 'XXX' 解决方法
在ide中执行python程序,都已经在默认的项目路径中,所以直接执行是没有问题的.但是在cmd中执行程序,所在路径是python的搜索路径,如果涉及到import引用就会报类似ImportError ...
随机推荐
- hdu2955 Robberies 01背包+概率
link:http://acm.hdu.edu.cn/showproblem.php?pid=2955 首先,这个题目的背包容量不能是概率.1.精度不清楚.2.把概率相加有什么意义呢?所以,转换一下, ...
- tty驱动程序框架
tty驱动程序框架 一.TTY概念解析 在Linux系统中,终端是一类字符型设备,它包括多种类型,通常使用tty来简称各种类型的终端设备. 1.1串口终端(/dev/ttyS*) 串口终端是使用计算机 ...
- JavaWeb学习记录(二)——防盗链技术
public class TestServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpSer ...
- pip安装模块警告InsecurePlatformWarning: A true SSLContext object is not available.
在用pip7.1.2版本安装第三方模块时出现了如下警告: /usr/lib/python2.7/site-packages/pip-7.1.2-py2.7.egg/pip/_vendor/reques ...
- Too many authentic authentication failures for root
连接SSH服务器时报 Too many authentic authentication failures for root. 方法一:删除目标服务器 /root/.ssh/目录下的 known_ho ...
- c++关于接口机制和不完全类型的小问题
都和typedef有关 一个是接口机制时用到的 就是所有用到接口的源文件只需包含简单的接口声明 接口的具体实现在其他源文件中实现 接口可以是 //interface.h typedef struct ...
- Unity垃圾回收
值类型:内置类型及结构体. 引用类型:对象.字符串.数组. GC的噩梦:连续字符串相加 System.Text.StringBuilder function ConcatExamp ...
- jQuery UI 对话框(Dialog) - 模态表单
<!doctype html><html lang="en"><head> <meta charset="utf-8" ...
- request.getParameter与request.getAttribute()
这里就request为例,不去考虑session. request对象是javax.servlet.http.HttpServletRequest接口的一个实例,request表示调用JSP页面的请求 ...
- Java 笔试题集锦
1.Java 不需要使用构造函数来创建对象的方法有哪些? 2.Java 创建多线程有哪些方法?你最喜欢哪一个?为什么? 3.Java