如何使用adb shell手动设置文件或目录时间戳?在adb shell中是否存在类似unix的触摸?

时间:2012-09-25 20:29:46

标签: android shell adb

aafm是一个小型的Python GUI实用程序,它使用adb作为底层,在MTP的计算机和Android设备之间复制文件。但就像现在一样,文件会获得复制时间的时间戳,而不是原始时间戳。

如果我们可以将设备中的最后修改日期设置为与计算机中上次修改的时间相匹配,那就太棒了。

我一直在浏览http://developer.android.com/tools/help/adb.html中的adb shell命令列表,但到目前为止,我无法找到任何类似于经典unix touch命令的内容。

这个shell中是否存在类似的内容?

2 个答案:

答案 0 :(得分:2)

您可以在Android上使用busybox来实现此目的。这是一个二进制文件,用作小型Linux标准程序的替换(主要是有限选项),例如:的触摸即可。 Read thisthis

现在我发现它是android 工具箱二进制文件的一部分,但是如果你在手机上找不到它,你可以使用自己构建的触摸二进制文件并使用它source file is here。您只需将其上传到手机上,chmod并在使用后删除。

答案 1 :(得分:1)

如果您正在讨论使用ADB从主机复制到Android,则应使用原始修改时间戳。 adbd中的当前代码执行utime()。在某些设备上,utime()失败(见下文)。通过ADB从Android复制到主机甚至不会尝试设置任何时间戳。我不知道这个遗漏的原因。在我的两个设备(2.1和4.0)上,修改时间戳设置为写入Android但不写入主机。在4.2设备上,FUSE文件系统存在问题,不允许使用utime();

在没有真正的SD卡(即使用FUSE)的设备上,除非你是root用户,否则在文件上执行utime()会有问题。这会进入异常情况,您可以创建文件但不能更改时间戳。唯一真正的解决方案是确保ro.secure=0或您正在运行adbd的不安全版本。