我将手机(运行带加密功能的 CyanogenMod 11 的三星 Galaxy S4 Mini)中的 MicroSD 卡更换为一张更大的卡。在拉出旧的之前,我将其内容备份到一个 tar 文件中:
/run/user/1000/gvfs/mtp:host=%5Busb%3A001%2C016%5D/SD card$ tar czvf ~/tmp/sgm4/sdcard.tar.gz *
然后更换卡,格式化新卡并尝试恢复我的文件:
/run/user/1000/gvfs/mtp:host=%5Busb%3A001%2C017%5D/SD card$ tar xzvf ~/tmp/sgm4/sdcard.tar.gz
文件已恢复,但对于每个文件,我都收到一条错误消息,例如:
00001.vcf
tar: 00001.vcf: Cannot utime: Operation not supported
Run Code Online (Sandbox Code Playgroud)
告诉我tar
无法恢复文件的原始时间戳。这是通过ls -l
显示当前日期和时间来确认的。
我通常不会担心它,但 Android/data 下有一些文件属于可能对时间戳敏感的应用程序。
是否有任何挂载选项或其他魔法可以允许在挂载的 mtp 文件系统上设置文件的时间戳?
该问题与我使用加密有关吗?
使用lubuntu 15.04。
更新
原来,MicroSD卡本身是使用vfat文件系统格式化的,没有任何加密。我将其从手机中取出,将其插入另一台计算机(Ubuntu 14.04),并且能够解压另一个 tarball,没有任何错误。解压文件的时间戳已正确恢复。
看起来无法设置文件的时间戳是 mtp 特有的。有谁知道如何克服这个问题?
命令date +%s
产生1403568422
. 有没有一种简单的方法可以将1403568422
UTC 时间戳转换为人类可读的时间戳?
python -c "import datetime;print datetime.datetime.utcfromtimestamp(1403568422).isoformat()"
作品种类;我也可以编写一个简短的 C 程序来做同样的事情。有没有更好的办法?
澄清
我不想让 date 以 UTC 格式打印当前时间。我希望日期(或其他实用程序)将自 UTC 以来的给定秒数(例如 1403568422)转换为人类可读的格式。
背景:我在一个文件中有这些时间戳,我想知道事情发生的确切时间。