Mac OS X(10.6以降)でディレクトリツリーをウォークし、ディレクトリが最後にバックアップ場所と同期されてから発生した変更を検出しようとするユーティリティを作成しています。
最初にファイルとフォルダーを同期するときに、iノード番号を取得してそのファイルまたはフォルダーのデータベースレコードに保存します。
NSString *oldFilePath = /* ... */;
NSError *error = nil;
NSDictionary *attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:oldFilePath error:&error];
/* set database record for oldFilePath to [attributes fileSystemFileNumber] */
新しいファイルまたはフォルダーに遭遇したときは、最初にiノード番号を使用してデータベースルックアップを実行し、元のファイルがある場合はそれを見つけます。
しかし、ファイルが親ディレクトリからサブディレクトリに移動し、親ディレクトリへの変更を検出しようとしている場合、保存されたiノード番号を使用して新しいパスを識別できるようにしたいと思います。移動と削除を区別できます。