Linuxシステムのポーリングスクリプトは、共有フォルダに新しいファイルが到着したことをWindowsに通知します。

Linuxシステムのポーリングスクリプトは、共有フォルダに新しいファイルが到着したことをWindowsに通知します。

Windows共有ドライブに到着する新しいファイルをユーザーに知らせるシェルスクリプトをLinuxサーバーで作成しようとしています。

ほとんどのソリューションでは、次のアプローチをお勧めします。

  1. LinuxにWindows共有フォルダをマウント
  2. Linuxシェルスクリプトを使用してポーリングを有効にします。

ただし、アクセスの問題によりマウントが許可されないため、WindowsドライブをマウントせずにLinuxでこれをやりたいと思います。

答え1

これはうまくいくかもしれません:

smbclient //server/share -A=/some/auth/file -TNc /some/timestamp/file - '/some/folder/*'
touch /some/timestamp/file

どこ:

  • //サーバー/共有リモートWindows共有です。
  • /一部/認証/ファイル共有にアクセスするための資格情報を含むファイル。
  • /一部/タイムスタンプ/ファイルタイムスタンプとして使用されるファイル。
  • /一部/フォルダ新しいファイルを検索するリモート共有のフォルダーです。

アイデアは、リモート共有のすべてのファイルがローカルファイルよりも最新であると見なすことです。/一部/タイムスタンプ/ファイル「新しい」と。 cmbclientコマンドがゼロバイト以外の値を受け取ると、新しいファイルが存在します。 smbclient コマンドの標準出力を " | tar tvf -" にパイプして新しいファイルのリストを取得することもできます。

このアプローチの問題は実際にはコピーすべての新しいファイルの内容が完了しました。リモート共有に大容量ファイルがある場合、これは膨大な帯域幅の無駄になります。リモートシステムにLinuxと同様のコマンドがある場合は、代わりにfindそのコマンドを実行できますtar

関連情報