
C:\aaa\bbb\ccc.dat というファイルを C:\aaa\ddd に移動したり、eee.dat にリネームした場合に、元の ccc.dat と eee.dat が同一であることを認識したいのですが、バイナリ比較する以外に、パスやファイル名が変わっても不変なIDのようなものはあるのでしょうか?
会社と自宅のPCでディレクトリの同期化を行うツールを作ろうと思っています。ファイル一覧のスナップショットを取っておいて、新規・削除・移動・変更などの差分をフラッシュメモリ等でやり取りする計画なのですが、移動しただけのファイルは「移動した」という情報だけにして、ファイルそのものはフラッシュメモリに入れずにすませたいところです。
パスやファイル名が変わっても不変な、ファイルにとって一意なIDのようなものは無いでしょうか?
Windows2000/XP FAT32/NTFS ツールは.NET/C# で考えています。
ヒントだけでも下されば後は自分で調べますのでよろしくお願いします。
No.4ベストアンサー
- 回答日時:
ファイルのユニークIDは、PlatformSDKで言うところの、
GetFileInformationByHandle で取得する、LPBY_HANDLE_FILE_INFORMATION 構造体の、nFileIndexHigh と nFileIndexLow ですね。
No.3
- 回答日時:
#2です。
>現存する2つのファイルの同一性ではなく、ファイルの所属するディレクトリやファイル名が変わったとしても、C:\aaa\ddd\eee.dat が、前回チェック時のC:\aaa\bbb\ccc.dat であることを認識したいのですが、やはり無理でしょうか・・・
なるほど。そういう意味でしたか。unix/linuxのi-node番号のようなものですね。
gnuwin32のツール(下記URL)のCoreUtilsを使っているのですが、これに含まれる ls.exe コマンドで 「ls -i ファイル名」とすると、ファイル名に対応した数字が表示されますが、NTFSの同一ドライブ内でのmoveコマンドやrenコマンド、またはexploreでの移動・リネームに対しては数字は不変のようです。FAT32だとリネームでは不変だけど、移動は駄目みたいです(数字が変わる)。XPで確認しました。また、テストしてませんが、いくらNTFSでもドライブをまたがった移動では無理でしょう。
NTFSについてはこのツールのソースを調べるかNTFSの仕様を調べるとよいかと思います。FAT32はおそらく無理じゃないかな。
参考URL:http://gnuwin32.sourceforge.net/packages.html
No.2
- 回答日時:
MD5というファイルの同一性の確認に使う手法があります。
ファイルを読み込んで128bitのデータを生成し、それが同一だと同一ファイルだと判断します。参考URL:http://www.vector.co.jp/soft/win95/util/se136327 …
この回答への補足
ありがとうございます。
MD5はファイルの内容全部を読む必要があるんですよね?
現存する2つのファイルの同一性ではなく、ファイルの所属するディレクトリやファイル名が変わったとしても、C:\aaa\ddd\eee.dat が、前回チェック時のC:\aaa\bbb\ccc.dat であることを認識したいのですが、やはり無理でしょうか・・・
ファイル名やディレクトリが変わっても、HDD上の物理位置は変わっていないわけですから、それを認識するにはファイルシステムを迂回してHDDをローレベルで読むしかないのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
彼女の過去の恋愛に嫉妬してし...
-
5000個のtiffファイルをpdfへ変...
-
iCloud for Windowsをアンイン...
-
WINDOWS CMDからゴミ箱のファ...
-
ファイルが移動してもリンクの...
-
CSVファイルの特定行の削除
-
エクセルのファイル:「自分」が...
-
複数のExcelファイルにある同名...
-
Excel: ファイル名になぜ、[...
-
VBScriptでExcelファイルをDLす...
-
[Unity]シーンファイルの中が消...
-
docxをmht形式で保存したファイ...
-
アクセスが開かなくなってしま...
-
ユーザーフォームをコピーする...
-
エクセルの一時ファイルが保存...
-
OneDrive必要なものでしょうか
-
CSVファイルの暗号化
-
WinPCのメモ帳を、アンドロ...
-
FTPのgetとputの使いわけ。
-
一行おきに貼り付ける 可能でし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel: ファイル名になぜ、[...
-
エクセルのファイル:「自分」が...
-
彼女の過去の恋愛に嫉妬してし...
-
CSVファイルの特定行の削除
-
iCloud for Windowsをアンイン...
-
ファイルが移動してもリンクの...
-
複数のExcelファイルにある同名...
-
vbsからのExcelマクロ呼び出し...
-
このファイルは外部のエディタ...
-
5000個のtiffファイルをpdfへ変...
-
EXCELVBAにて文字列にして「01...
-
FTPのgetとputの使いわけ。
-
ノーツの添付ファイルの場所を...
-
自動で.xlsを閉じて指定フォル...
-
CSVファイルの暗号化
-
[Unity]シーンファイルの中が消...
-
VBAにおいて、ファイルの移...
-
WINDOWS CMDからゴミ箱のファ...
-
docxをmht形式で保存したファイ...
-
【VBA】フォルダ内の複数Excel...
おすすめ情報