繁体   English   中英

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

[英]How to manually set file or directory timestamp using adb shell? Does anything like unix's touch exist in adb shell?

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

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

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

这个shell中是否存在类似的东西?

你可以在android上使用busybox来达到这个目的。 这是一个二进制代码,用作小型linux标准程序的替换(主要是有限选项),例如触摸 阅读本文此内容

现在我发现它是android 工具箱二进制文件的一部分,但是如果你在手机上找不到它就可以使用自己构建的触摸二进制文件并使用它, 源文件就在这里 你只需要在手机上传,chmod和删除后使用。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM