2012-04-02 5 views
0

特定のディレクトリの内容(ファイルとフォルダ)を読み込んでデータベースに書き込むスクリプトを実装しようとしています。私の目標は、ディスク内の対応する物理ファイルに影響を与えずに、記述とタグに関連するファイルとフォルダをそれらに編成させるソフトウェアを作成することです。 しかし、現時点で私は論理的な問題に直面しています。物理ファイルとデータベース・レジスタの間を直接接続するにはどうすればよいですか?物理ファイルが何らかの理由で編集されたり、ルートディレクトリ内の別のフォルダに移動したとしても、ソフトウェアはそのファイルをデータベース内の元のレジスタと関連付けることができます。ファイルをデータベースにリンクする方法は?

私の最初のアイデアは、すべてのファイルを識別するためにチェックサムハッシュを使用していましたが、ファイルが編集されていればハッシュもそうですね。それ以外にも、フォルダそのものをチェックすることはできないと私は考えています。

私の頭に浮かんだ別の解決策は、ディレクトリ内のすべてのファイルとフォルダ名の冒頭にユニークなキーを適用することでした。それはうまくいくかもしれませんが、私は即興の解決策が好きなので、私がまだ検討していない別の方法があるかもしれないと思います。 誰にもアドバイスがありますか?

+1

あなたは "* nix"であると仮定して、 'http:// stackoverflow.com/questions/511463/monitor-directory-for-changes'については、 – sakhunzai

+0

非常にありがとうございます。そして確かに、そのディレクトリはSambaを介してWindowsにコンテンツを共有するローカルのLinuxサーバにあるということを知っていたはずです。 –

答えて

1

Linuxでは、ファイルを移動または名前を変更すると変更されないinodeでファイルを追跡できます。あなたもget notified when a file changesすることができます。

ファイルをデータベースに保存することを検討しましたか?

+0

ありがとう!私はinotifyについて知りませんでした。私はそれについて今読んでいて、それは良いようです。 –

+0

いくつかのテストをした後、iノード番号は私の必要性に合っています。ファイルまたはフォルダが作成されると、inode番号が作成され、参照されたファイルまたはフォルダが削除されたときにのみ削除されます。ファイルの移動や編集後も変わりません。 –

0

できません。

ファイルを識別する方法がないように見えます。内容もパス名も分かりません。

パスをIDとして使用し(DB内の参照として使用)、システムツール(mvなど)を使用してファイルを移動するのではなく、ファイルシステムとデータベースを更新する独自のスクリプトを使用します。

関連する問題