リモートファイルの内容を更新する方法

リモートファイルの内容を更新する方法

Samba(samba 2:4.3.9 + dfsg amd64)を介していくつかのフォルダを共有するUbuntu 14.04 LTS開発システムがあります。他のUbuntuシステムにこれらの共有がインストールされています(mount -t cifs -o uid=$UID,gid=$(id -g),domain=DEVHOST,username=guest //DEVHOST/share /mnt/share)。ほとんどすべてが大丈夫です。ただし、時には開発システムで(Vimを介して)ファイルを編集すると、変更はクライアントに反映されません。つまり、クライアントはかなり長い間、古いファイルの内容を見ることになります。

ll表示されたファイル修正日は更新されませんでした。ただし、同じディレクトリに新しく作成されたファイルが表示されます。ただし、既存のファイルのファイルの内容はまだ更新されません。ただし、less編集後のファイルサイズが大きくなるにつれて、ファイルの末尾に追加のnullバイト()がたくさん表示されます。^@

古いキャッシュがあるようです。リモートSambaサーバーからファイルを再ロードするようにクライアントに指示するにはどうすればよいですか?デスクトップではF5Nautilusでリフレッシュしようとしましたが、SSH経由でクライアントにログインしました。

注:これは永続的な問題ではありません。クライアントを再起動すると、すべてが再び正常に機能します(少なくともしばらくの間)。強制的にアンインストール/再インストールするか、クライアントを再起動するよりも優れた回避策があるかどうか疑問に思います。根本的な原因となるヒントを歓迎します。

答え1

根本的な原因となるヒントを歓迎します。

同様の問題が発生しました。ホストの1つが正しい時計を持っていないことがわかりました。すべてのホストで有効にするとntp問題が解決します。

リモートSambaサーバーからファイルを再ロードするようにクライアントに指示するにはどうすればよいですか?

を実行してファイルを再ロードして更新しますかenv stat $FILE?そうではないと思います。

ファイルのoplockをオフにして、クライアントでファイルを更新しますか?
からman mount.cifs

The CIFS protocol mandates (in effect) that the client should not
cache file data unless it holds an opportunistic lock (aka oplock) 
or a lease. Both of these entities allow the client to guarantee         
certain types of exclusive access to a file so that it can access its   
contents without needing to continually interact with the server.

gvimのコピーを終了するまで(バッファのみを閉じてファイルのロックを解除してGoogleドライブを更新しない)、Windows7ボックスとGoogleドライブの間に同期の問題があることがわかりました。 DEVHOSTでvimを使用してファイルを編集してからvimを閉じると、クライアント側にまだ問題がありますか?

@StephenHarrisのコメントで述べたように、上記のコマンドをmount編集して追加してみてください。-o cache=none

からman mount.cifs

cache=
    Cache mode. See the section below on CACHE COHERENCY for details. 
    Allowed values are:
    ·   none: do not cache file data at all
    ·   strict: follow the CIFS/SMB2 protocol strictly
    ·   loose: allow loose caching semantics
    The default in kernels prior to 3.7 was "loose". 
    As of kernel 3.7 the default is "strict".

関連情報