我想在PC(Win7,NTFS)和Mac(OS X,HFS +)之间(双向)同步文件。我曾尝试过使用很多现有的工具/方法(Unison,SyncToy或其他工作于Samba共享的软件等),但它们都不能在我的文件上保留文件创建时间戳(因此称为FCT)这是我无法接受的。在OS X中设置文件时间戳的API
齐奏不明白的FCT的概念,也许是因为它与Unix的考虑主要是建立在访问由OS X.服务SMB共享时(见my Unison forum post)
Windows无法获得(或设置)中的FCT在这种情况下,它会显示并设置文件修改时间来代替FCT(Samba将在此处受到责备,而不是Windows),因此不能使用类似SyncToy的内容。
另一方面,OS X在使用Windows提供的SMB共享时可以获取和设置FCT。这是一个很好的发现,因为我认为我可以编写一个可以在OS X上运行的Python程序,使用cp
复制文件来执行本地文件与SMB共享之间的文件同步。当我发现FCTs没有被cp -p
选项保存时,这也变成了一个禁忌。仅在通过Finder GUI复制文件时保留了FCT。
所以我决定自己编写一个文件同步工具,可能使用Python,它的一个实例将在PC和Mac上运行,通过ssh进行通信。由于Python本身并没有可靠的方法来获取或设置FCT,因此我决定为每个平台构建一个本机帮助应用程序,以便Python为此达到目的。 (或者说,或者用Python编写Python模块,但我相信这样做会更复杂)
这使我想到了 - 什么是在OS X中设置文件时间戳的API?
我期待构建一个控制台应用程序,我的Python脚本可以通过STDIN & STDOUT与之通信。基本上,我正在寻找的GetFileTime
OS X的等价物和SetFileTime
东西我可以用C做的是伟大的,因为我没有经验的目的C.
你任何机会知道一个普通的C方法** **设置文件创建时间? [see here](http://www.gsp.com/cgi-bin/man.cgi?section=2&topic=utimes)可能在BSD上使用两次utimes()调用,但[apple's version](https: //developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man2/utimes.2.html#//apple_ref/doc/man/2/utimes)不会谈论它。 – 0cd 2013-05-01 07:56:49
我用这个答案一起砍了一个小的cmdline实用程序[birthtime_touch](https://github.com/herzbube/birthtime_touch)。 – herzbube 2016-08-15 23:24:54
@PuneetArora [This SO answer](http://stackoverflow.com/a/38885787/1054378)有一个简单的C解决方案,它使用Core Foundation函数'CFURLSetResourcePropertyForKey'。 – herzbube 2016-08-15 23:26:12