在Ubuntu上,有没有办法自动将文件移动到另一个目录,因为它们是SFTP的?

时间:2014-12-10 22:27:49

标签: linux apache ubuntu

我是SFTP的文件到我的ubuntu服务器上的目录。理想情况下,我希望这些文件位于我的apache public html文件夹中,因为它们是用户正在上传的图片。

我发现我不能简单地将文件直接SFTP到我的公共html文件夹,所以我正在研究其他方法。我的图片服务器是ubuntu,所以我认为可以使用一些本机命令或设置来自动将显示在我的SFTP目录中的图片移动到我的公共html目录。

希望我有意义,而且我不确定我应该在哪里提出这个问题。

1 个答案:

答案 0 :(得分:3)

三种可能性:

  1. 为什么不能直接在公共html文件夹中上传文件?我认为这与写入该目录的访问限制有关,因此您可以尝试将此目录的写入权限更改为您要上载的用户。 使用 chmod 命令更改访问限制,使用 chown 更改diles和目录的所有权。最好阅读这些命令的文档(" man chmod "" man chown ")。

    < / LI>
  2. 您可以定期运行脚本,获取所有上传的文件并将其移动到指定的目标目录。为此,您需要在bash中编写一个简短的shell脚本,例如:

    #!/bin/bash
    mv /home/user/UPLOADS/*.jpg /var/www/images/
    

    (此脚本只从目录/ home / user / UPLOADS中获取扩展名为.jpg的所有文件,并将它们放入目录/ var / wwww / images中而无需进一步检查)

    将此脚本放在某处(例如/ home / user / bin /)并使其可执行: chmod a + x / home / user / bin / SCRIPTNAME

    此脚本可以通过cron定期运行,调用 crontab -e 并写一个新行 像这样:

    */5 * * * * /home/user/bin/SCRIPTNAME
    

    每5分钟执行一次脚本。

    缺点是它每5分钟调用一次,因此上传和移动最多5分钟之间可能存在差距。另外,如果脚本在上传新图像的同时运行,可能会发生奇怪的事情......

  3. 第三种可能性是通过观察具有内核的inotify功能的上传目录,在上传完成后立即执行脚本。如果你想这样做,最好谷歌inotify例子,这有点复杂。这是另一个答案: Monitor Directory for Changes