Linux 计算机中的轮询脚本将通知 Windows 共享文件夹上有新文件到达

Linux 计算机中的轮询脚本将通知 Windows 共享文件夹上有新文件到达

我正在尝试在 Linux 服务器中编写 shell 脚本,它将通知用户新文件到达 Windows 共享驱动器上。

大多数解决方案建议采用以下方法:

  1. 在Linux上挂载Windows共享文件夹
  2. 通过 Linux shell 脚本启用轮询。

但是,我想在 Linux 上不安装 Windows 驱动器的情况下实现此操作,因为由于访问问题,不允许安装操作。

答案1

这可能有效:

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

在哪里:

  • //服务器/共享是您的远程 Windows 共享;
  • /一些/授权/文件是一个包含您访问该共享的凭据的文件;
  • /一些/时间戳/文件是用作时间戳的文件;
  • /一些/文件夹是远程共享上您要在其中查找新文件的文件夹;

这个想法是,您认为远程共享上的任何文件都比本地文件新/一些/时间戳/文件作为“新”。如果 cmbclient 命令收到 0 字节以外的任何内容,则表示您有新文件。您还可以将 smbclient 命令的标准输出通过管道传输到“ | tar tvf -”以获取新文件的列表。

这种方法的问题在于它实际上副本所有新文件的内容都结束了。如果远程共享上有大文件,这将是带宽的巨大浪费。如果远程系统有类似于 Linux 的命令find,您可以运行该命令而不是使用tar.

相关内容