PC (Win7、NTFS) と Mac (OS X、HFS+) の間でファイルを (双方向で) 同期したいと考えています。多くの既存のツール/メソッド (Unison、SyncToy、または Samba 共有で動作するその他のソフトウェア) を使用してみましたが、それらのいずれも、ファイルの作成タイムスタンプ (したがって、FCT と呼ばれます) を保存できません。これは私には受け入れられません。
Unison は FCT の概念を理解していません。これはおそらく、主に Unix を念頭に置いて構築されているためです (私の Unison フォーラムの投稿を参照してください) 。
Windows は、OS X が提供する SMB 共有にアクセスするときに FCT を取得 (または設定) できません。そのようなシナリオでは、FCT の代わりにファイルの変更時間を表示および設定します (ただし、Windows ではなく Samba が非難されます)。したがって、 SyncToyのようなものです。使用できません。
一方、OS X は、Windows が提供する SMB 共有を操作するときに FCT を取得および設定できます。cp
ファイルのコピーに使用して、ローカル ファイルと SMB 共有の間でファイル同期を行う、OS X 上で実行される Python プログラムを作成できると思ったので、これは良い発見でした。このオプションでは FCT が保存されないことがわかったので、これもダメであることが判明しましたcp -p
。FCT が保持されるのは、Finder GUI を介してファイルをコピーしている間だけです。
そこで、ファイル同期ユーティリティを自分で作成することにしました。おそらく Python を使用して、そのインスタンスが PC と Mac でそれぞれ実行され、ssh 経由で通信します。Python 自体には、FCT を取得または設定するための信頼できる方法がないため、Python がこの目的で対話する各プラットフォーム用のネイティブ ヘルパー アプリケーションを構築することにしました。(それか、CでPythonモジュールを書くかのどちらかですが、それはもっと複雑になると思います)
それは私に質問をもたらします-OS Xでファイルのタイムスタンプを設定するAPIは何ですか?
私のPythonスクリプトがSTDINとSTDOUTを介して通信できるコンソールアプリケーションを構築しようとしています。GetFileTime
基本的に私はOS Xの同等のものを探していますSetFileTime
Objective C で開発した経験がないので、C でできることは素晴らしいことです。