我不知道这是否可能,如果可能的话,从哪里开始呢?
实际上,我们有一个 SFTP 服务器,我希望能够在文件下载后将其存档。该服务器有多个 root 用户,因此我需要创建一个可以在每个用户的根文件夹中重复执行的过程。
但是,每个用户的文件夹都在相同的初始目录(而不是主目录)中,并且每个用户的文件夹都具有相同的文件结构(具有 In、Out 和 Archive 文件夹)。
有没有办法实现这一点?我确实想知道在每天结束时运行一个 cron 任务,但如果是这样,我想处理文件在下载后被覆盖的不太可能发生的事件。例如,如果有人从我们这里获得一个文件,然后联系我们告知需要修改某些内容。然后需要再次将文件保存在 Out 文件夹中,但我几乎没有办法保证工作人员不会覆盖先前下载的文件,而不是用“v2”之类的后缀来覆盖它。
我不知道如何知道文件已下载。当 Ubuntu 上或特定用户访问文件时,您是否能够运行事件?
如果没有,我可以检查日志,这会有所帮助,我会显示已访问文件的列表,但是,日志没有给出年份。考虑到这将是一个持续的解决方案,在 12 个月内,我不希望系统认为“此文件已被访问”,而实际上发生的是一年多前访问了同一个文件。
任何东西都需要在服务器端运行。客户端都位于公司外部,因此我几乎无法控制使用什么软件等来连接到我们的服务器。
如果文件被覆盖,那就很重要了,因为如果它被更改了,我最不希望看到的就是文件被存档。然后客户端就无法下载更新的文件。如果有一个新文件,名字不同,那显然是一个新文件。
如果您需要任何详细信息(日志格式等),请告诉我。
文件结构(每个用户都有自己的文件夹,因此):
/sftp共享
->/用户一
->->/在
->->/出
->->/存档
->/用户二
->->/在
->->/出
->->/存档
我想要检查已下载的文件位于 Out 文件夹中。In 文件夹中的文件无需检查,因为这些是我们已经收到的项目,并且由我们在 SQL 服务器读取文件时已运行的进程存档。
我并不是真的想找个人给我一个完整的脚本(除非你觉得太有帮助!),但如果有人能给我指出正确的方向,告诉我可能需要从哪里开始,以及我可能需要的一些脚本片段,那将非常有用。
感谢所有能提供帮助的人。
汤姆