如何同步存储元数据(文件名、路径、大小、类型...)的数据库和文件系统上的文件夹?我的网络应用程序(spring mvc)需要这个,它允许用户在服务器上查看他们的文件。例如,如果我手动添加或删除服务器(ubuntu 服务器)上的某些文件,我希望更新数据库以添加或删除行。每次用户刷新页面时,我的应用程序是否应该重新扫描文件夹,删除所有表的行并在数据库中插入实际的文件列表?在这种情况下,每次用户刷新页面时,即使我没有修改文件夹的内容,我也必须修改表格。是否可以让数据库监听文件夹并自动更新行?请帮助我
最佳答案
需要有功能来定期检查文件夹及其子文件夹的时间戳(如果有)以检测最近的更改,然后更新数据库(如果有)。一个相当简单的脚本就可以做到这一点,并从 cron 进行调度或作为守护进程运行。还可以实现一个存储过程来执行此操作并将其安排为重复事件。如果需要,它可以使用 sys_exec 调用外部可执行文件。请参阅http://www.mysqludf.org/对于 sys_exec 源和其他 UDF。有关在 MySQL 中创建事件的信息位于 http://dev.mysql.com/doc/refman/5.1/en/create-event.html 。
为了帮助检测文件夹中的更改,我编写了一个名为 tfind 的实用程序,其分辨率为 1 秒。可以通过运行“tfind --help”来打印其用法,例如“tfind --mtime 30folder”会打印文件夹中修改时间小于 30 秒的所有文件的名称。 tfind 是用 perl 编写的,可以在/usr/bin/perl 中安装了 perl 的所有 Linux 系统上运行。如果 perl 安装在其他地方,只需使用正确的路径名更新第一行。如果发现任何最近修改的文件/文件夹,该脚本也可以修改为仅打印“1”。如果没有这样的文件/文件夹,它不会打印任何内容。 tfind 可通过 https://raw.githubusercontent.com/zalacer/projects-tn/master/Perl/tfind?raw=TRUE 获取.
关于java - 同步mysql数据库和文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29193066/