パスにシンボリックリンクを作成できることを確認する方法は?

パスにシンボリックリンクを作成できることを確認する方法は?

コンテキスト:

Windowsホストの共有フォルダーを持つUbuntu Virtualbox VM。トレーダー:シェフソロ

/tmp/shared_dataパスがあり、そのパスに次のようにシンボリックリンクを作成しようとしているとします。

ln -s /var/www /tmp/shared_data/web_root

プロトコルエラーとは表示されません。

"bash" "/tmp/chef-script20161020-6826-kore5t" 出力開始----

==> dev:     STDOUT:
==> dev:     STDERR: ln: failed to create symbolic link ‘/tmp/shared_data/web_root’: Protocol error
==> dev:     ---- End output of "bash"  "/tmp/chef-script20161020-6826-kore5t" ----
==> dev:     Ran "bash"  "/tmp/chef-script20161020-6826-kore5t" returned 1

これは、私がシンボリックリンクを作成するパスがWindows FSであり、それをサポートしていないためだと思います。

試す前に、パスにシンボリックリンクが作成され、ビルドが破損する可能性があるかどうかを検出する方法はありますか?

ベストアンサー1

あなたできる出力を解析し、mountパスのファイルシステムタイプを決定します。これは最も移植性が高いが面倒です(サブディレクトリではなくマウントポイントに関する直接の情報のみを提供するため)。ただし、一部のシステム固有の方法は、以下で使用できます。

これではないことを確認したいかもしれません。cifsファイルシステムたとえば、次のようにできます。

if df -t cifs /tmp/shared_data/web_root 2>/dev/null
then
    echo cannot make a symbolic link...
else
    ln -s /var/www /tmp/shared_data/web_root
fi 

マニュアルページUbuntudf説明する-t

-t, --type=タイプ
ファイルシステムのリストをこのタイプに制限します。タイプ

これは違うPOSIX df:

-t
[XSI]出力に割り当てられた合計スペース番号が含まれます。

だからあなたは持つことができますシンプルまたは持ち運べる

おすすめ記事