芒果爱吃胡萝卜 - 自动部署ftp
type: channel
link: http://blog.mangolovecarrot.net/tag/%E8%87%AA%E5%8A%A8%E9%83%A8%E7%BD%B2ftp/
items: Git代码自动上传到ftp服务器上（只上传有改动的文件）

Git代码自动上传到ftp服务器上（只上传有改动的文件）
type: item
date: 2021-05-08T19:29:00+08:00
description: 需求将git的最新代码部署到ftp服务器上。而且不能每次全部覆盖，而只上传有改动的部分。典型场景是个人站点使用的是虚拟主机，只支持FTP，但站点的部分文件是在本地Git或Github上托管的。每次更新完文件后希望可以自动将更新的文件上传虚拟主机。方案万能的Github上有现成的工具：git-ftp开工1-安装git-ftp本文以树莓派的debian系统为例，其他系统的安装方法请移步官方说明sudo apt-get install git-ftp2-进入git目录配置ftp信息（配置是每个git项目分开的）cd /www/wwwroot/blog.mangolovecarrot.net/usr/plugins/HandsomeHelper git config git-ftp.url "ftp://ftpsite:21/wwwroot/usr/plugins/HandsomeHelper" git config git-ftp.user "ftpusr" git config git-ftp.password "ftppass"3-首次上传以便记住当前状态即使FTP上已经存在也没事会用最新的覆盖的。git ftp init会看到目录下的文件（会自动包含所有子目录）被索引并全部上传到ftp指定目录下了。4 files to sync: [1 of 4] Buffered for upload '.gitignore'. [2 of 4] Buffered for upload 'LICENSE'. [3 of 4] Buffered for upload 'Plugin.php'. [4 of 4] Buffered for upload 'README.md'. Uploading ... Last deployment changed from to 264623c848804c4365173ba20bd5eef0123a9c64.如果文件很多不想全部上传一次而且ftp上已经存在的话，可以用另一个命令git ftp catchup以后只要想上传最新改动（commit）过的文件就执行一下这个命令就完事了git ftp push你还可以结合Git的hook功能，每次git push后自动执行这个命令，具体请参见这篇文章。[post cid="268" cover=""/]