在 root 设备上使用 su 命令复制文件和目录

Copy Files and directories with su command on rooted device

类似的问题经常被问到这里,但我想不通,我到底要做什么。这不是重复的,因为这里许多线程上的解决方案不是我正在寻找的或者不适合我。我想将文件和目录复制到 /data/ 文件夹内的文件夹中。因此,我在 SO 上进行了大量搜索,并用 Google 搜索了几个小时。但是我找到的所有线索都不够清楚,不要让我得到我想要的。我也找到了这个博客,但这对我没有帮助。

http://su.chainfire.eu/

http://forum.xda-developers.com/showthread.php?t=1694251

我试过的

我可以将目录从 /data/ 目录复制到 sd 而无需 su 命令,并且仅使用 java 代码即可正常工作。第一个问题:从/data/文件夹复制到sd卡不需要root权限吗? 我做的下一步是,像这样执行 su 命令:

Process pp  = Runtime.getRuntime().exec("su cat "+originDir+" > "+targetDir);

其中 orginDir 是文件在 sd 卡上的路径,targetDir 是 /data/ 目录中的文件夹,如 Strings,例如:

/data/test/testfile.txt

这里的问题是,我可以复制这个文件,但它有 0 个字节。那我做错了什么?

我想要什么

  1. 我想从 sd 卡复制一个文件到 /data/ 目录
  2. 我想在 /data/ 目录中创建一个文件夹
  3. 我想将整个目录复制到 /data/ 目录

我搜索了很多,但找不到使用 su 命令将文件写入该目录的好教程。另外,是否有一个列表包含所有 Android 可用的 su 命令,这些命令可以以编程方式执行?相信我,我不是一个懒惰的开发人员,我搜索了很多东西,但我还没有找到一个好的教程。

使用复制 linux 命令并为其添加 -r(递归)开关 cp -r /source/ /target/。如果目标不存在,它将创建目标

但在此之前你需要让你的系统是可写的

mount -o remount,rw /system 
cp -r /source/ /target/
mount -o remount,ro /system #Don't forget to do this, even if everything else fails!!!!

编辑: 根据下面的评论,此解决方案仅应在针对相对较新的设备时使用