我需要从 Ubuntu 监控 FTP 服务器中的目录。如果 FTP 服务器中的特定目录中出现任何新文件,则应将该文件复制到我的 Ubuntu 计算机。我已通过 ssh 登录到我的 FTP 服务器。此自动化操作应从我的 Ubuntu 计算机完成,可以吗?
答案1
答案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。它占用的资源很少。