【Mac】SMB接続の共有フォルダを常に「最新の情報に更新」する方法

SMB接続の共有フォルダを常に「最新の情報に更新」 コンピュータ関連
スポンサーリンク

Macでフォルダの内容を「最新の情報に更新」したい時ってありません?

うちではMacとWindows機をLANで繋いでネットワーク共有しています。
Mac側からSMB接続でwinの「共有フォルダ」をマウント、
ネットワークボリュームとすることで手軽にデータが共有できてものすごく便利です。

そして通常、共有されたフォルダ内のファイルに対する変更(削除、リネーム、新規作成等)はリアルタイムで反映されます。

がしかし、ごくたまにそうならないケースがあるのです。

そんな時には表示を更新したくなるわけですが、
Macには「最新の情報に更新」するボタン(メニュー)がありません。

・・・さてどうしよう?

スポンサーリンク

共有フォルダの内容が変わらない(更新されない)という状態

基本的には共有フォルダ/共有ディレクトリにおいてなされた変更は随時反映されます。

Mac側から
Finder > 移動 > サーバへ接続(ショートカット:cmd + k)

「サーバアドレス」欄に smb://ローカルip で接続、(またはコンピュータ名)
例:smb://192.168.1.110
「サーバアドレス」欄

認証を経て、開きたい共有フォルダを選択します。
開きたい共有フォルダを選択
(ファイル共有自体の設定は他所に譲りここでは割愛します)

共有フォルダを開くことができました。
共有されたフォルダ

共有されたフォルダでファイルを削除すれば、もう一方のウインドウからも消えることが確認できます。
もちろん新しくファイルを作れば新たに表示されます。

スポンサーリンク

ですがある時、変更が反映されないことがあるのに気がつきました。
追加で作成したファイルが表示されないのです。

具体的には

  1. MacからWinにSMB接続でアクセス中
  2. 切断(取り出し)しないままWinが休止状態に or 電源を切る
  3. Winを再起動
  4. Macからそのままアクセス(切断しての再接続を行わない)
  5. 変更がリアルタイムで反映されなくなる

つまり一旦接続が切れることで何か問題が生じるらしいのです。

とは言え接続が切れる前に取得したファイルリストについては(ipが変わっていなければおそらく)そのままアクセスできます。
しかしながらWin側で新たに作成したファイルなどは一覧として出てこなくなります。
・・・少なくともしばらくは。

そして何度も言いますがMacのFinderには「最新の情報に更新」がありません。
しかもこの場合Finderを再起動しても状況は改善されないのです。

これはちょっと困ります。

解決法1:一旦接続を解除し、改めて接続する

まずやるべきなのは共有フォルダへの接続を一旦解除し、改めて接続し直すこと。

ボリュームを右クリック(ctrl + クリック)して「取り出す」を選ぶか、Finderのイジェクトボタンを押します。
ボリュームを取り出す

再度接続し直すと、うまくいけば状況は改善されるはずです。

でもちょっと面倒臭い。
そしてこれでもうまくいかない場合があります。

それはキャッシュが原因なのですが、
そんな時は次の方法を試してください。

解決法2:ローカル SMB キャッシュを無効にする

Macは共有フォルダのメタデータをローカルメモリにキャッシュし、それを元にアクセスしています。
このキャッシュ部分に何らかの障害が発生する事で、フォルダ内の情報がうまく表示できなくなってしまうようです。

ということで、
OSのバージョンによって挙動は少し違うようですが、基本的にはディレクトリキャッシュを無効にして参照しない、つまりキャッシュそのものを仕組みとして使わない設定にすれば良いようです。

そうすれば情報が毎回ダウンロードされるようになって常に最新の状態で表示されます。

スポンサーリンク

nsmb.confでの設定変更

/etc/nsmb.conf

にSMB接続の設定を記述することができます。
nsmb.confがない場合は新規に作成してください。

隠しファイルはFinderを開いて「 cmd + shift + .(ドット) 」で表示・非表示を切り替えられます。

今回はキャッシュを無効にしたいので

[default]
dir_cache_max_cnt=0

と追記し保存します。
dir_cache_max_cnt

共有フォルダに接続している場合は一旦接続を解除し、再接続します。
これでこの設定が適用されます。

以降、仮に手動で更新する必要が生じても「リスト表示」や「カラム表示」など、表示方法を一旦切り替えれば情報が更新されるようになります。

(参考:ローカル SMB ディレクトリの一覧表のキャッシュを無効にする(Appleサポート))

なおその他の設定についてはターミナルから

man nsmb.conf

と入力することで確認できます。
(抜けるときは「q」キーを押してください。)

まとめ

これで無事、変更がリアルタイムに反映されるようになりました。

ちなみになんでこんな事になったかというと、
古いWindows機(なんとXPで未だ現役!)をHDD TVレコーダーとして使っているのですが、録画が終わると休止状態になるよう設定しているのです。

他に作業しているわけでもないのでモニタの電源は自動的にオフの状態。
そのまま気がつかず番組録画が終了、自動的に休止状態に。

あ、接続切ってないのに落ちちゃった。
と慌てて再起動。

焦った〜、さて続きを・・・
と思ったら共有フォルダの中身がちゃんと表示されてない!!
みたいな。

まぁ、あまり一般的な状況ではないと思いますが、
接続が切れるということが無いわけではないかと、似たような悩みを抱えている方もいらっしゃるんじゃないかと思ったので記事にしてみました。

これが何かのヒントになれば幸いです。

コメント

タイトルとURLをコピーしました