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

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

我在一家公司工作,在某些情况下必须通过 FTP 部署 php web 应用程序。我正在自动化部署过程,需要编写一个脚本来将文件通过 FTP 传输到暂存和生产环境。

要求:

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

限制:

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

我的问题是:是否有任何基于 FTP 的实用程序可以满足这些要求,而不必自己编写?

答案1

只要您控制客户端,您就可以在客户端上使用 FTPFS,然后将本地目录 rsync 到显然是本地但实际上是通过 FTPFS 安装的目录。

我了解 FTPFS 现在是卢夫斯

编辑:我很想链接到教程,但我通常只是从项目 wiki 开始,而 sourceforge 现在似乎出了点问题。CurlFTPFS 似乎基于 cURL 和 FUSE,可以在这里找到,并且那里的安装/卸载看起来很简单:

$ 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/

答案2

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

答案3

也许可以使用类似 ncftp 的方法来将目录同步到服务器。您甚至可以将其放入 capistrano(在签出要部署的版本后,覆盖 :deploy 并运行 ncftp 命令)。

相关内容