ftp 中的自动目录触发

ftp 中的自动目录触发

我需要从 Ubuntu 监控 FTP 服务器中的目录。如果 FTP 服务器中的特定目录中出现任何新文件,则应将该文件复制到我的 Ubuntu 计算机。我已通过 ssh 登录到我的 FTP 服务器。此自动化操作应从我的 Ubuntu 计算机完成,可以吗?

答案1

同步可以在两台机器之间轻松完成此操作。如果您有 SSH 访问权限,则可以使用转发端口连接 syncthing 实例。

答案2

您的评论ftp 中的自动目录触发几乎就完成了。尝试

$ ssh "$SERVER" inotifywait -m /tmp/sample/ -e create -e moved_to \
  | while read d o f; do
      case "$o" in CREATE|MOVED_TO) 
        scp "$SERVER":/tmp/sample/"$f" /tmp/sample/;;
      esac
  done

但是,如果你想让它与子目录一起工作,你可能应该在每次发生时调用 rsync(rsync 本身会确定哪个文件是新的),并将 -r 包含到 inotifywait 中,例如

$ ssh "$SERVER" inotifywait -r -m /tmp/sample/ -e create -e moved_to \
  | while read d o f; do
      case "$o" in CREATE|MOVED_TO) 
        rsync -avh "$SERVER":/tmp/sample /tmp/sample;;
      esac
  done

(如果您想使用 scp 来执行此操作,您必须确保创建了本地目录等,这几乎最终重新实现 rsync。)


尽管如此,如果你经常做这种事情,我建议你研究一下 Syncthing。它占用的资源很少。

相关内容