こんばんは。
UNIXの勉強をしている初心者です。
シンボリックリンクとネットワークファイルシステムの違いが分かりません。

他のPCのディレクトリを自分のパソコンから操作するためにそこをマウントしている。これがNFSだと覚えました。
ディレクトリを開くと、全く別の他のディレクトリにリンクされている。これがシンボリックリンクと習いました。

リンクとマウントという言葉は違うものの、やっていることは一緒では無いでしょうか?

表現がお粗末で申し訳ありませんが、どうちがうのでしょうか?

教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

誤解を恐れずに言うとシンボリックリンクはWindowsのショートカットで、NFSはネットワークドライブです。



unixでどのようにこれらを利用するかと言うと、先ずはシンボリックリンクからご説明します。
バージョンの異なる同一のアプリケーションをインストール必要があったとします。例えば暗号化に必要なopensslです。
またこれらを必要とする別のアプリケーションが複数あったとします。例えばApacheやOpenSSHなどです。
このようなときにApacheやOpenSSHが利用するopensslの参照先はバイナリファイルに記述されていますので、これらをわざわざopensslを利用しているアプリケーションを再インストールするのは非常に手間です。
ですので、下記のようなことを実施します。
/opt/openssl-now ←今利用しているopenssl
/opt/openssl-new ←新しくしたopenssl
/opt/openssl ←/opt/openssl-nowへのシンボリックリンク
↓シンボリックリンクの変更
/opt/openssl ←/opt/openssl-newへのシンボリックリンク

こうすることで、利用しているアプリケーションを全て再コンパイルする必要なく手軽にメンテナンスが可能になります。

NFSによるマウントは別のサーバのディスクをあたかも自分の物のようにみせることですので、例えば信頼性の高い容量の大きく速度も速いディスクを一つのサーバでもち、これらを別サーバに貸し出すといった利用ができます。このように信頼性を集約することでコストを大幅に削減できたりもします。
私の主観ではNFSであまりいい思い出がないので、積極的な導入は考えたくないです。
    • good
    • 0

確かに NFS は壊れた実装も多いけど, Solaris の NFS は (大元ということもあって) 一番まともじゃないですかね>#3.


他の選択肢は CIFS? でも, samba は「元のソースから壊れてた」こともあるしなぁ. しかも「設計段階で破綻してる」レベルの, 余りにもひどい壊れっぷりに驚愕したくらい.
日本のユーザグループで「samba は機能を追加することよりも前に C の勉強をしてくれよ」っていわれたこともある.
    • good
    • 0

まあ広い意味での「パスの変換機構」と思えば一緒かもしれん.


マウントは「別のファイルシステムを自分のファイルシステムに接ぎ木する機構」であるのに対し, シンボリックリンクは「『別のところを参照してくれ』と書いてあるファイル」です. そして, シンボリックリンクは 1回作れば (消さない限り) シャットダウンしても有効であるのに対し, マウント機構ではシャットダウンしてしまうと (再びマウントしなければ) 無効となります.
なお, シンボリックリンクは「ディレクトリとは限らない」 (ファイルなどに対してもシンボリックリンクがはれる) し「リンク先が存在するとも限らない」ことは知っていていいんじゃないかな.
    • good
    • 0
この回答へのお礼

何となく分かりました。ショートカットみたいですね。
ありがとうございます。

お礼日時:2009/06/30 18:41

質問する時は時に注意しないといけないのは・・・言葉使いですよ!



「シンボリックリンクとネットワークファイルシステム」の「ネットワークファイルシステム」とNFSは同じですか? 別ですか???

質問を読むと同じ機能を言っているように思えますが・・・


「NFS」はNFSサーバがあって動作する機能ですが、マウントはNFSを含めてHDDなどのデバイスをOSに接続(マウント)する機能です。
 リンク(シンボリック&ハード・リンク)は、ファイル・システム中でファイルを参照する方法です。


> シンボリックリンクとネットワークファイルシステムの違いが分かりません。
概念上の違いがあるので、何が分からないを具体的に書かないと解答できないと思います。
    • good
    • 0
この回答へのお礼

言葉が悪くすいません。
最近、シンボリックリンクという言葉を知りました。そのとき、「以前覚えた、NFSとどう違うのだろうか?」疑問を持ちました。
(質問に書いたように理解してしまっているので、自分の中では同じなのです。)

そもそもが分かっていない初心者で情けないのですが、概念を教えてください。(そうしたら、概念の違いが分かると思いますので。)

お礼日時:2009/06/29 23:27

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qシンボリックリンクをする方法

シンボリックリンクする際にHardlink Shell Extensionというソフトを使用しているのですが
方法がいまいちわからなかったので質問させてください。

AppDataというフォルダをRamdiskにシンボリックリンクしたいのですが
AppDataを右クリック→リンク元として選択
→Ramdisk上で右クリック→リンクを作成
であっているでしょうか?

あとリンク先を作成の次に
「シンボリックリンク」か「シンボリックリンクの一括作成」のどちらを選択すればいいでしょうか?

よろしくお願いします。

Aベストアンサー

%AppData%を揮発性メモリ上に作ったりしたら、アプリケーションが動作しなくなりますがいいのですか?
★つれづれなるままに - つれづれブログ:Windows 7のシンボリックリンクを試す - livedoor Blog(ブログ)
http://blog.livedoor.jp/s_imai_jp/archives/51360129.html

Qシンボリックリンクを貼る=PATHを通す?

リンク先で、ビルドした後、該当ディレクトリにPATHを通している(と思う)のですが、
どうしてこれでPATHが通るのでしょうか?

・シンボリックリンクって、ショートカットぐらいの認識しかないのですが、PATHが通っているディレクトリにシンボリックリンクを貼ると、PATHが通ることになるのでしょうか?
・$ export PATHと何が違うのでしょうか?
・同じ?

>PATHの通ったディレクトリにphantomjsへのリンクを作成します。
>$ sudo ln -s ~/phantomjs/bin/phantomjs /usr/local/bin/phantomjs
http://www.atmarkit.co.jp/ait/articles/1210/10/news012.html

Aベストアンサー

>>PATHに対する探索にかかります。
>・ということは、シンボリックリンクを張れば、結果としてパスが通るのでしょうか?
そうですね。
パスが通ったディレクトリに新しいファイルをコピーしたとき、結果的にそのファイルにもパスが通りますよね。それと同じです。

>・但し、それを一般的には「PATHを通す」とは言わない、ということでしょうか?
微妙なラインですが、いわない人が多いと思います。
「PATHを通す」は、環境変数PATHを設定する行為、そのものをさす場合が多いと思います。

Qシンボリックリンクの検索

そのディレクトリ以下のシンボリックリンクを検索してくれるコマンドというのはあるのでしょうか?

/home/usr/以下に存在する全てのシンボリックリンクを調べたいのです。

よろしくお願いいたします。

Aベストアンサー

こんにちは。

> そのディレクトリ以下のシンボリックリンクを検索してくれるコマンドというのはあるのでしょうか?

そのディレクトリに移動し、
find . -type l
と入力すればシンボリックリンクが一覧表示されますよ。
(-type の右の文字は小文字のエルです)

findコマンドのこの他のオプションは↓などを参照ください。
http://www.k-tanaka.net/unix/find.html

参考URL:http://www.k-tanaka.net/unix/find.html

Qシンボリックリンクでパミッションエラー?

ブラウザからコマンド実行しようとするとエラーになります。
シンボリックリンクは関係ないかもしれません。

・下記で何かおかしいことはあるでしょうか?
・「本体ファイル」と「シンボリックリンク」の「所有者」が異なっているのはマズいでしょうか?
・「x」がそれぞれ3つずつ表示されているので、実行権限に問題はない、という認識で合っているでしょうか?

■/usr/local/bin
lrwxrwxrwx 1 root root phantomjs -> /home/user/phantomjs/bin/phantomjs

■/home/user/phantomjs/bin
-rwxrwxr-x 1 user user phantomjs

Aベストアンサー

> ・/home/userのパーミッションは、ご指摘の通りでした
> ・drwx------ 20 user user

なるほど。これではapacheというユーザーには
シンボリックリンクファイルが指し示している 実体ファイルを実行することは出来ませんね。



>シンボリックリンクするのではなく、/usr/local/bin/にコピーしてしまったほうが簡単
疑問1
>・なぜコピーすると、問題が解決するのでしょうか?

apacheというユーザーにとって、/home/userの下にあるファイルは参照も実行もできないですが
/usr/local/bin/の下の実体ファイルは実行できるからです。

いまでも、/usr/local/bin/phantomjs にあるのだから実行できるはずと 思ってしまうかもしれませんが
シンボリックリンクファイルの場合は、単にファイルの場所を転送しているだけなので
ファイルの権限としては、そのリンク先のファイルやその親ディレクトリに依存します。




>・実行プロセスのオーナーは、"root"ではなく同じくapacheなので、状況は改善しないと思うのですが…
>・/usr/local/bin/のパミッション
>・drwxr-xr-x. 2 root root

いえいえ。
上記のrwxr-x-rxのパーミッションの意味は、
root本人には rwx
rootグループには、r-x
それ以外には、r-x
です。
apacheにとっては、ファイルを書き込む権限はないですが、
読み込む権限と、ディレクトリ下に移動できる権限はあります。


>
>疑問2
>・何をコピーするのでしょうか?
> ・コマンドで実行する対象ファイルだけ?
>・それとも、ライブラリ全体?

基本的には、.実行したいファイルです。つまり
/usr/local/bin/phantomjsとなります。

ただし、実行するコマンドが、ライブラリやconfigファイルなど、
別のファイルも読み込むということもありえます。
その場合は、そのファイルも、apacheが参照できるディレクトリにコピーして
コマンド中のパス設定なり環境設定なりも変更しないけません。
(そのプログラムの仕様次第なので、どうするのがよいかは一概には言えません)

もし、そのプログラムが
任意のディレクトリにまずは、インストールして
/usr/local/bin/にシンボリックリンクを設置することを 
標準インストール方法として推奨しているのであれば
インストールするディレクトリを /usr/local/xxxあたりに変更してしまったほうが
手っ取り早いでしょう。


>・一旦アンインストール後、再度インストール場所をやり直すということでしょうか?

そのほうがよいでしょうね。
/home/user下では、他のユーザーには実行さえできないので、
apacheユーザーでも参照できるディレクトリの /usr/local/xxxxとか/optとかに。

> ・/home/userのパーミッションは、ご指摘の通りでした
> ・drwx------ 20 user user

なるほど。これではapacheというユーザーには
シンボリックリンクファイルが指し示している 実体ファイルを実行することは出来ませんね。



>シンボリックリンクするのではなく、/usr/local/bin/にコピーしてしまったほうが簡単
疑問1
>・なぜコピーすると、問題が解決するのでしょうか?

apacheというユーザーにとって、/home/userの下にあるファイルは参照も実行もできないですが
/usr/local/bin/の下の実体ファイルは...続きを読む

QWindows のシンボリックリンクを編集する方法はありませんか。

Windows のシンボリックリンクを編集する方法はありませんか。

シンボリックリンクのリンク先を相対パスに編集し直したいのです。
何かよい方法はありませんでしょうか。

現状
Windows 7 64bit
Hardlink ShellExtension
http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html
上記アプリにてシンボリックリンクを作っています。
しかし作られるリンク先は絶対アドレスになります。
このアドレスを相対アドレスに変更したいのです。
ボリューム変更や、バックアップ先でもリンクが機能するようにしたいためです。

Aベストアンサー

win7の mklink ではどうでしょうか。

MKLINK [[/D] | [/H] | [/J]] リンク ターゲット

/D
ディレクトリのシンボリック リンクを作成します。
既定では、ファイルのシンボリック リンクが作成されます。

/H
シンボリック リンクではなく、ハード リンクを作成します。

/J
ディレクトリ ジャンクションを作成します。

リンク
新しいシンボリック リンク名を指定します。

ターゲット
新しいリンクが参照するパス (相対または絶対)を指定します。

Qlinuxコマンド mkdirでディレクトリを作成したのにディレクトリではありませんとエラーが

mkdir ○○
でディレクトリを作成したのにも関わらず、そのディレクトリにコピーしようとしたところ
cp: 宛先の `○○' はディレクトリではありません とエラーが出ました。

cp `find . -name "[ab]*" -print` ○○

同じディレクトリにある△△と○○という2つのディレクトリのうち△△に移動して△△の中のファイルを○○のファイルにコピーするといったものです。

Aベストアンサー

》△△と○○という2つのディレクトリのうち△△に移動して△△の中のファイルを○○のファイルにコピーするといったものです。

ということは、現在△△にいるわけだから、○○にコピーするためには、
cp `find . -name "[ab]*" -print` ../○○
とするか、もしくは○○はフルパスにする必要がありますが、そうしてますか?

Qシンボリックリンクについて

OSはRedhat5です。
シンボリックリンクの作成がうまくいきません。
実体がある作業ディレクトリ上でシンボリックリンクを作成すると参照できるのですが、
作業ディレクトリ以外に作成すると作成できるのですが、参照しようとすると「シンボリックリンクの階層が多すぎます」と出てきます。

こちらの質問コーナーの「質問番号:502147」にも同様の質問がされており、
自分自身へのシンボリックシンクを張ってたりしませんか?
と回答されていますがよく意味がわからない状態です。

お手数ですがご教授頂けると助かります。

Aベストアンサー

#2です。。。再現しません。/a というファイルがないので、「そのようなファイルやディレクトリはありません」というエラーになります。

ln -s a /b だと、bの中身は「a」になるので、/a を参照しようとして存在しないとエラーになります。これはこれで正常な動きです。「シンボリックリンクの階層が多すぎます」というエラーが出る以上、/a というシンボリックリンクが存在するとしか思えません。

/b を /home/test/a へのシンボリックリンクにしたいなら、
絶対パスで ln -s /home/test/a /b または相対パスで ln -s home/test/a /b とします。

QLinuxでUSBをマウントできない

Linux初心者なのですが、

部屋でホームサーバを立てようとASUSのUN42を購入し
公式で
ubuntu-15.04-server-amd64.iso
をダウンロードし、インストールしました。

rootでログインし、
その後、USBメモリからデータを移そうとしたところ
USBメモリを接続すると
[sdb] Asking for cache data failed
[sdb] Assuming drive cache : write through
と表示されてその後

http://whzat.dyns.net/shoko2/USB_F_Memory/
このページを見つつ
# mkdir /mnt/usb
# mount -t vfat /dev/sdb1 /mnt/usb
とマウントしようとしましたが、
special device /dev/sdb1/ does not exist
となり、lsでファイルを確認できないのでおそらくマウントできていないものと思います。

回答お願いいたします。

Linux初心者なのですが、

部屋でホームサーバを立てようとASUSのUN42を購入し
公式で
ubuntu-15.04-server-amd64.iso
をダウンロードし、インストールしました。

rootでログインし、
その後、USBメモリからデータを移そうとしたところ
USBメモリを接続すると
[sdb] Asking for cache data failed
[sdb] Assuming drive cache : write through
と表示されてその後

http://whzat.dyns.net/shoko2/USB_F_Memory/
このページを見つつ
# mkdir /mnt/usb
# mount -t vfat /dev/sdb1 /mnt/usb
とマ...続きを読む

Aベストアンサー

他のUSBポートで試してみましたか?
> special device /dev/sdb1/ does not exist
USBデバイスが認識できない(適切なドライバーをロードできない、ドライバーがそのUSBデバイスを認識できない)ので、パーティション情報が読み取れなく、スペシャルデバイスファイルの自動生成が行われていない状況です。
/var/log/messagesにデバイスの認識状況が記録されているので確認しましょう。

Qシンボリックリンクについて

教えてください。

シンボリックリンクというものがありますが、色々サイトで説明を読むのですが明確にイメージできません。ファイルにシンボリックリンクを設定した場合例えばファイルを修正したら参照先も書き換えられのでしょうか?

よろしくお願い申します。

Aベストアンサー

No1さんの回答で、全てですが、

シンボリックリンク:
イメージとしては、リンク先を開いているので、当然書き換わります。リンク元は、単なるリンク情報だけで、エクスプローラーで見れば、0バイトになっているはずです。リンク先、リンク元で別ディスクにあると、その違いがはっきりします。残り容量で差がでます。

その反意語が、

ハードリンク: (通称)
これは、リンク元にもコピーが保存されています。ハードリンクは、単語としては一般化され、いろんな場面で、でてきます。

(”リンク先”、”リンク元” などの使い方も、相対的なものなので、どちらが、どう呼びなさいという定義はありませんが、リンクを作った場所を現在表示していれば、そこがリンク元。リンク先は、その反対、つまり、実ファイルが在る場所を指します。この逆の言い方も、状況によっては正しいかと)

QSSH、ディレクトリ内ファイルを一度に空っぽには?

SSHのコマンドを使って、ディレクトリ内にある全てのファイルの中身を空っぽにしたいのですがどのようなコマンドを使えばよいのでしょうか?

現在仮に…

/DIR/というディレクトリがあり、中には
abc.log.1
abc.log.2
abc.log.3
abc.log.4
abc.log.5


とあります。

現在は、

: > abc.log.1

といった具合に、1つ1つ空っぽにしているのですが量が多いので困っております。
一度に/DIR/の中身のファイル全てを空にする方法がありましたらアドバイス頂けると助かります。

尚、あくまでファイルを空にするということであって、ファイル自体の削除を行うわけではありませんので宜しくお願いします。m(_ _)m

Aベストアンサー

サブディレクトリがないなら、下記でOK
cd /DIR
tee </dev/null *

サブディレクトリがある場合、シンプルには、

find /DIR -type f -exec cp /dev/null {} \;

ファイルが数千数万あって、上記で遅いなら、多分これでもOK

find /DIR -type f | xargs tee


人気Q&Aランキング

おすすめ情報