如何仅通过FTP部署新的和已更改的文件

我正在为在某些情况下需要通过FTP部署php web应用程序的公司工作。 我正在自动执行部署过程,并需要编写一个脚本来将这些文件传输到分段和生产环境。

要求:

  1. 只应将新文件或更改的文件传输到远程服务器

限制:

  1. 在远程环境中没有任何types的shell访问
  2. 无法使用rsync
  3. 只有FTP可用

我的问题:是否有任何基于FTP的工具可以满足这些要求,而不是自己写?

只要你控制客户端,你可以在客户端上使用FTPFS,然后通过FTPFS目录将本地目录rsync同步到显然是本地但真正挂载的目录。

我知道FTPFS现在是LUFS的一部分。

编辑 :我很想链接到一个教程,但我通常只是从项目wiki开始,现在似乎有一些与sourceforge。 似乎基于cURL和FUSE的CurlFTPFS 可以在这里find ,挂载/卸载看起来像这样简单:

$ mkdir sunet $ curlftpfs ftp://ftp.sunet.se/ sunet/ $ cd sunet/ $ ls -l total 0 Dr-xr-xr-x 3 root root 96 Feb 23 2004 bin dr-xr-xr-x 2 root root 72 Mar 2 2004 dev dr-xr-xr-x 2 root root 48 Feb 23 2004 etc dr-xr-xr-x 2 root root 120 Feb 23 2004 lib -rw-r--r-- 1 root root 622187310 Mar 11 06:13 ls-lR -rw-r--r-- 1 root root 76389037 Mar 11 06:15 ls-lR.gz drwxrwxr-x 37 root root 1272 Feb 27 14:17 pub dr-xr-xr-x 3 root root 72 Feb 23 2004 usr $ cd .. $ fusermount -u sunet/ 

我们使用ant来进行脚本和自动化。 antFTP任务有一个“依赖”参数,只传输新的或更改的文件http://ant.apache.org/manual/Tasks/ftp.html

也许沿着ncftp的路线来同步一个目录到服务器。 您可以尽可能将其删除到capistrano(覆盖:部署并运行ncftp命令,一旦您检出了要部署的版本)。