Windows共有ドライブに到着する新しいファイルをユーザーに知らせるシェルスクリプトをLinuxサーバーで作成しようとしています。
ほとんどのソリューションでは、次のアプローチをお勧めします。
- LinuxにWindows共有フォルダをマウント
- 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
。