使用FTP-Deploy-Action部署时遇FTPError:550文件不存在错误求助
解决FTP-Deploy-Action尝试删除已不存在文件的550错误
问题根源
这个错误是因为FTP-Deploy-Action依赖的同步状态文件(默认是.ftp-deploy-sync-state.json)中仍残留着已删除文件的记录,导致工具误判该文件需要同步删除,即便本地和服务器都已不存在该文件。
具体解决步骤
1. 清理本地同步状态文件
- 找到项目根目录下的
.ftp-deploy-sync-state.json,打开后搜索my-file相关条目,直接删除这些记录,保存后提交到仓库。 - 也可以直接删除整个状态文件,重新运行CI时工具会重新扫描本地与服务器的文件,生成全新的同步记录。
2. 配置忽略FTP错误
在GitHub Actions部署配置文件(如.github/workflows/deploy.yml)中,给FTP-Deploy-Action添加ignore-ftp-errors参数,让工具跳过删除不存在文件这类错误:
- name: FTP Deploy uses: SamKirkland/FTP-Deploy-Action@v4.3.5 with: server: ${{ secrets.FTP_SERVER }} username: ${{ secrets.FTP_USERNAME }} password: ${{ secrets.FTP_PASSWORD }} ignore-ftp-errors: true
3. 确认服务器文件状态并清理缓存
手动登录FTP服务器,再次确认/my-folder/下无my-file;部分服务器会缓存文件列表,若存在缓存机制,清理后再重新触发CI流程。
4. 升级到工具最新版本
旧版本可能存在状态同步bug,将配置中的版本号(如@v4.3.5)替换为最新稳定版(如@v4),新版本大概率修复了这类状态不一致问题。
内容的提问来源于stack exchange,提问作者Raphaël Balet
相关产品推荐
相关产品推荐

