2017-05-24 30 views
-1

私はしばらく探していましたが、シンボリックリンクのmd5チェックサムが、それが指しているファイルと等しい理由を推測することはできません。私の理解ではa symbolic link is still a file。それが空であるとすれば、symlinkがd41d8cd98f00b204e9800998ecf8427eのmd5を持つことを期待しています。シンボリックリンクのmd5チェックサムが元のファイルと等しい理由

echo Hello World > test 
ln -s test test_symlink 

が次に実行されている:

md5deep test test_symlink 

収量:

は、しかし、実際にテスト(hereを参照)

e59ff97941044f85df5297e1c302d260 /tmp/test 
e59ff97941044f85df5297e1c302d260 /tmp/test_symlink 

誰もが私がここで行方不明です何を知っていますか?

+0

シンボリックリンクの*ポイント*は、ターゲットへの透過*ポインタ*として使用できます。つまり、ターゲット上で操作した場合と同じ操作が可能です(データのオープンと読み取り、メタデータのチェックなど)。 'ls'のようなシンボリックリンクとツールを識別できる呼び出しがあります。 'md5deep'ツールは明らかに気にされていません。おそらく誰もそれに興味がないからです。 –

+0

'cat test'と' cat test_symlink'が同じ出力を出力するのと同じ理由です。 – Barmar

答えて

1

シンボリックリンクは、すべてに透過的です。ファイルシステム操作。それがそのポイントです。 openシンボリックリンクを開くと、実際にターゲットファイルが開き、MD5を取得するのはターゲットファイルの内容です。 readlinklstat(そしてまれに、lchownlutimes、およびopen(..., O_PATH|O_NOFOLLOW))は、後ろのファイルの代わりにシンボリックリンクを見ることができます。

+0

私はmd5sが本当に等しいことを見ました。実際には、ターゲットファイルを削除するというシンボリックリンクの性質をツールが考慮していないことを認識しておかなければなりません。また、md5を壊れたリンク上で計算しようとすると 'md5sum:test_symlink:No such file or directory'となります。説明ありがとう。 – Adonis

関連する問題