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

标签 linux apache ubuntu

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

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

希望我说的有道理,但我不确定我还应该在哪里问这个问题。

最佳答案

三种可能性:

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

  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 示例,这有点复杂。这是另一个 SO 答案: Monitor Directory for Changes

关于linux - 在 Ubuntu 上,有没有办法自动将文件移动到另一个目录,因为它们是 SFTP 的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27412061/

相关文章:

regex - 跨行替换正则表达式,保留换行符?

Mysql 使用 sudo,但不使用 sudo。 (ubuntu 16.04, mysql 5.7.12-0ubuntu1.1)

c++ - Linux,在fork()中与另一个程序共享一个缓冲区

java - 如何使用 java 获取 linux 上所有可用串口的列表?

php - 将服务器字符集从 iso-8859-1 更改为 utf-8

Django WSGI 应用程序 SegFault

git - 配置 git repo - Ubuntu 服务器

python-3.x - 在 Linux 上被错误杀死的任务可以被认为是内存泄漏吗?

linux - 复制并粘贴到linux终端

java - 如何向使用 apache poi 生成的幻灯片添加背景图像?