同じファイルシステムでのハードリンク中の無効なクロスデバイスリンク


14

/ rootへのハードリンクが必要な/home/myuser/Desktop/rc/.netrcファイルがあります。つまり、rootユーザーのホームディレクトリです。私がする時:

ln /home/user/Destkop/rc/.netrc /root

次のエラーが発生します。

ln:ハードリンクの作成/root/.netrc' =>.netrc ':無効なクロスデバイスリンク

しかし、ファイルをmyuserのホーム、つまり/ home / myuserにハードリンクすると機能します。

それでは、問題は何ですか、ここにファイルシステムが1つしかないときに無効なクロスデバイスが表示されるのはなぜですか?

PS。RHEL6を使用しています


ところで、私の.netrcのパーミッションは、それがあるべきように、600である
エルヴィンAslanov

1
2つのディレクトリが同じファイルシステムにあることを確認しますか?実行mount | column -tして見てみましょう。または、実行mountpoint -d /mountpoint -d /homemountpoint -d user、とmountpoint -d /root... is not a mountpoint最後の3つを取得する必要があります。

2
複数のStackExchangeサイトにクロスポストしないでください。

@EvanTeitelmanリアルな外観ではありませんmount | column -tけどcolumn -t < /proc/mounts
ハウケレイジング

1
@HaukeLaging:そのとおりです。/proc/mountsは、システム上のすべてのマウントを表示する可能性が高く/etc/mtab、そこmountから情報が取得されます。しかし、それは多くの近代的なシステムであることは注目に値する、/etc/mtab/proc/mountsの両方にリンクされています/proc/self/mounts

回答:


7

/homeディレクトリがディレクトリと同じパーティションにない可能性が最も高いです/root

cat /etc/fstab 異なるパーティション間でハードリンクを作成することはできず、シンボリックリンクのみが作成できるため、これを簡単に確認できます。


4

私には、HARDリンクを使用するのではなく、代わりにシンボリックリンクを使用するのが最善の方法であると思われます。あなたはそれがはるかに面倒ではなく、物事がうまくいくことがわかります。ハードリンクに気付いていない場合、いくつかの興味深い問題があります。

を参照man lnしてチェックアウト-sオプションを!

一般に、HARDリンクの代わりにシンボリックリンクを使用してください。


8
問題を解決するかもしれませんが、なぜこれが起こっているのかを実際には説明していません。
ベックス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.