我正在将文件通过 SFTP 传输到我的 ubuntu 服务器上的一个目录中。理想情况下,我希望这些文件位于我的 apache 公共(public) html 文件夹中,因为它们是用户上传的图片。
我发现我不能简单地将文件直接通过 SFTP 传输到我的公共(public) html 文件夹,所以我正在研究其他方法。我的图片服务器是 ubuntu,所以我认为可能有一些 native 命令或设置可以用来自动将显示在我的 SFTP 目录中的图片移动到我的公共(public) html 目录。
希望我说的有道理,但我不确定我还应该在哪里问这个问题。
最佳答案
三种可能性:
为什么不能直接将文件上传到您的公共(public) html 文件夹中?我认为这与写入该目录的访问限制有关,因此您可以尝试更改您上传的用户的目录写入权限。 使用命令 chmod 更改访问限制,使用 chown 更改文件和目录的所有权。最好阅读这些命令(“man chmod”和“man chown”)的文档。
您可以定期运行脚本,获取所有上传的文件并将它们移动到指定的目标目录。为此,您需要在 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 分钟的间隔。此外,如果脚本在上传新图像时运行,可能会发生一些奇怪的事情......
第三种可能性是通过使用内核的 inotify 功能观察上传目录,在上传完成后立即执行脚本。如果你想这样做,最好在谷歌上搜索 inotify 示例,这有点复杂。这是另一个 SO 答案: Monitor Directory for Changes
关于linux - 在 Ubuntu 上,有没有办法自动将文件移动到另一个目录,因为它们是 SFTP 的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27412061/