如何在不使用adb的情况下将数据内容复制到sdcard /?

Shr*_*kar 25 android

嗨,我需要复制/移动内容data/tombstonessdcard/tombstones

我正在使用以下命令:

mv data/tombstones /sdcard/tombstones

"failed on 'tombstones' - Cross-device link"
Run Code Online (Sandbox Code Playgroud)

但我犯了错误.

Dhe*_*kar 36

你有一个mv命令的SANE VERSION

从xda的lbcoder和androidforums的darkxuser中解释几位

"'墓碑'失败了 - 跨设备链接"

这意味着您无法在引用不同文件系统上的文件的一个设备(文件系统)上创建硬链接.

这是一个古老的unix事物.您不能使用大多数mv实现在文件系统中移动文件.mv不是为了将数据从设备复制到设备,而是简单地更改文件在分区内的位置.由于/ data和/ sdcard是不同的分区,因此它失败了.

考虑一下你自己幸运的是你有一个mv命令的SANE版本,但是没有尝试 - 一些旧版本实际上会尝试执行此操作,这将导致指向NOTHING的硬链接,并且原始数据是INACCESSIBLE.

mv命令不移动数据!它将HARDLINK移动到数据.

如果要将文件移动到其他文件系统,则需要使用"cp"命令.复制该文件以在其他文件系统上创建它的SECOND COPY,然后使用"rm"命令删除OLD.

一个简单的移动命令:

#!/bin/bash
dd if="$1" of="$2"
rm -f "$1"
Run Code Online (Sandbox Code Playgroud)

您将注意到"cp"命令返回true或false,具体取决于副本的成功完成,因此只有在文件成功复制后才会删除原始文件.

要么

#!/bin/bash
cat data/tombstones > sdcard/tombstones
rm data/tombstones
Run Code Online (Sandbox Code Playgroud)

可以将这些脚本复制到PATH变量引用的某个位置并设置可执行文件.


不同的界面

如果您需要与adb不同的界面,则可以使用DDMS View中FileExplorer移动文件.

边注:

您可以在以下情况下将文件移动到文件夹中:

  • 你是root;
  • 这是你的app目录;
  • 你已经使用了chmodadb或其他地方更改权限

  • Android没有'cp'命令,除非在事后添加了busybox或者类似的设备. (2认同)
  • @ChrisStratton说的没错.在这种情况下,可以使用dd if = source_file of = dest_file或上面列出的替代方法 (2认同)
  • 我不能直接用dd替换cp,因为dd没有退出状态的标准行为 (2认同)