
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で質問しましょう!
似たような質問が見つかりました
- SQL Server ACCESSで3ファイルを結合して、表を作成するやり方を教えて下さい。 17 2022/08/15 20:34
- Excel(エクセル) Excel VBA 3 2023/04/22 10:46
- UNIX・Linux JSLinuxについて。 Linuxのこの手順のプログラミングは合っているでしょうか。 ①ホームディ 2 2022/06/20 15:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- SQL Server ACCESSで複数テーブルを結合して、リストを作る方法を教えてください。 2 2022/08/12 19:32
- Excel(エクセル) Excelを開くとエラーが出る 2 2022/10/03 16:13
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- Excel(エクセル) ¥マークを含むパスの処理について(マクロ、または関数) 2 2022/12/25 02:11
- UNIX・Linux サーバー間のデータコピー(データ形式とデーターフォーマットの変換あり。一定間隔で処理) 2 2023/08/22 22:15
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel: ファイル名になぜ、[...
-
エクセルのファイル:「自分」が...
-
彼女の過去の恋愛に嫉妬してし...
-
CSVファイルの特定行の削除
-
xlsファイルが開かない。
-
ファイルが移動してもリンクの...
-
Googleドライブについて
-
VBSでフォルダ内の最新のファイ...
-
パソコンのファイルの開き方に...
-
FTPのgetとputの使いわけ。
-
java ファイル書き込み
-
フォルダ内の複数のファイルの...
-
今、Android携帯で撮った写真
-
EXCELVBAにて文字列にして「01...
-
ドリームウィーバーMX2004で更...
-
C:\\Binaries\\_svdir.VBSやC:\...
-
アクセスが開かなくなってしま...
-
docxをmht形式で保存したファイ...
-
Delphi
-
C# リッチテキスト形式のファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルの特定行の削除
-
彼女の過去の恋愛に嫉妬してし...
-
エクセルのファイル:「自分」が...
-
Excel: ファイル名になぜ、[...
-
ファイルが移動してもリンクの...
-
複数のExcelファイルにある同名...
-
iCloud for Windowsをアンイン...
-
EXCELVBAにて文字列にして「01...
-
[Unity]シーンファイルの中が消...
-
vbsからのExcelマクロ呼び出し...
-
5000個のtiffファイルをpdfへ変...
-
batでファイル名を変更したい(...
-
WINDOWS CMDからゴミ箱のファ...
-
VBA ファイル一覧を取得して全...
-
docxをmht形式で保存したファイ...
-
CSVファイルの暗号化
-
バインダーの作り方
-
FTPのgetとputの使いわけ。
-
フォルダ内の複数のファイルの...
-
自動で.xlsを閉じて指定フォル...
おすすめ情報