0

可能重复:
在 linux 中监视文件系统更改的最佳方法

我需要你的帮助。如何在 linux 服务器上记录使用 SSH 完成的活动 - 诸如创建文件或目录、删除文件或目录、重命名特定路径的文件或目录等活动。我需要任何 bash、python 或 php 脚本的解决方案,或者如果 linux 中有任何选项,我可以使用它来查看在特定路径或文件夹上完成的所有活动。我需要使用这些日志进行同步。

好的,让我向您解释整个场景。我正在开发同步工具,我们使用 Samba 共享所有文件和文件夹,我需要通过网络同步这些文件。我使用 grep samba 日志来观察客户端完成的活动,例如创建文件或文件夹、删除文件和文件夹以及重命名文件或文件夹我将这些日志用于我的同步工具及其工作正常。但是我只在使用 samba 完成更改时才获取日志 - 如果更改是使用 SSH 完成的,那么这些活动不会被记录并且不会被同步。所以我需要 grep 记录使用 SSH 对特定路径所做的更改(例如:/mnt/test) - 在测试文件夹中所做的更改,如创建删除和重命名。

4

1 回答 1

0

据我了解,这里发生的事情是这样的。

有一个 Samba 服务器可以导出具有多个用户的文件系统和一组可以直接访问文件系统的用户(他们通过 SSH 登录)。并且这个文件系统需要被复制到另一个位置。

TS 正在开发一种工具来执行复制。

这里至少有两个选项。

  1. 更传统的方法是rsync定期在两个位置之间运行。因此,副本并不总是一致的,但它很容易并且系统是分区容错且可用的。也就是这个方法从“CAP”定理中选择“A”和“P”。

  2. 受类似 Dropbox 的云存储和即时复制的流行启发的另一种方法是观察文件系统。这可以用inotifyor来完成fam

    的接口inotify可用于大多数脚本语言,包括 Perl、Python 和 PHP。这以一致性换取可用性。也就是说,在复制一个大文件之前,它在另一端将无法访问。

    的接口以FAMPHP 和可能的其他语言提供。有关不同文件系统监控 API 的讨论,请参阅链接问题

第一个选项本质上是单线。第二个选项也不应该太难(以 Dropbox 守护程序源为例)。

注意:复制是 Serverfault.com 上反复出现的主题。

于 2013-01-19T17:45:47.550 回答