我想(双向)在 PC(Win7、NTFS)和 Mac(OS X、HFS+)之间同步文件。我尝试使用很多现有的工具/方法(Unison、SyncToy 或其他在 Samba 共享上工作的软件等),但它们都无法在我的文件上保留文件创建时间戳(因此称为 FCT),这对我来说是不可接受的。
Unison 不理解 FCT 的概念,可能是因为它主要是基于 Unix 构建的(请参阅我的 Unison 论坛帖子)
当访问由 OS X 提供的 SMB 共享时,Windows 无法获取(或设置)FCT。在这种情况下,它会显示和设置文件修改时间来代替 FCT(这里应该归咎于 Samba,而不是 Windows),所以类似于SyncToy不能使用。
另一方面,OS X 在使用 Windows 服务的 SMB 共享时可以获取和设置 FCT。这是一个很好的发现,因为我认为我可以编写一个在 OS X 上运行的 Python 程序,用于在本地文件和 SMB 共享之间进行文件同步,cp
用于复制文件。当我发现 FCT 没有通过该cp -p
选项保留时,这也被证明是不可行的。只有在通过 Finder GUI 复制文件时才会保留 FCT。
所以我决定自己编写一个文件同步实用程序,可能使用 Python,它的一个实例将分别在 PC 和 Mac 上运行,通过 ssh 进行通信。由于 Python 本身没有可靠的方法来获取或设置 FCT,因此我决定为 Python 为此目的与之对话的每个平台构建一个本机帮助应用程序。(要么用 C 编写 Python 模块,但我相信这样做会更复杂)
这让我不禁要问——在 OS X 中设置文件时间戳的 API 是什么?
我正在寻找构建一个控制台应用程序,我的 Python 脚本可以通过 STDIN 和 STDOUT 与之通信。基本上我正在寻找GetFileTime
和SetFileTime
我可以在 C 中做的事情会很棒,因为我没有使用 Objective C 开发的经验。