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