GitHub Actions中使用lftp镜像SFTP文件失败的问题求助
问题解决:GitHub Action中lftp mirror命令路径错误导致上传失败
问题根源
你的lftp命令里,mirror参数顺序搞反了。当使用-R(反向镜像,本地→远程)时,mirror的正确语法是:
mirror -R [本地源路径] [远程目标路径]
你只指定了$REMOTE_PATH,没有明确本地路径,lftp会默认把$REMOTE_PATH当成本地路径去查找,这就是为什么报错会指向Runner的/github/workspace/test——它在本地工作目录里找远程路径对应的文件夹,自然找不到。
修复后的命令
把本地路径(当前工作目录,用.表示)加到mirror命令里,放在$REMOTE_PATH前面:
lftp -d -c "set ftp:ssl-allow no; open -u $SFTP_USER,placeholder -e 'mirror -R --delete --only-newer --exclude-glob .git/ --exclude-glob .github/ -P1 --parallel=10 -x changed_files.txt . \"$REMOTE_PATH\"' $SFTP_HOST"
注意点:
- 用
.代表当前本地工作目录(也就是GitHub Runner的/github/workspace) - 给
$REMOTE_PATH加上双引号,避免路径包含特殊字符时出错 - 如果远程服务器上的
$REMOTE_PATH不存在,可以加上--create参数让lftp自动创建目录:mirror -R --create ...
额外检查项
- 确认远程服务器上
$SFTP_USER对目标路径/home/username/test/有读写权限 - 验证
changed_files.txt里的路径都是相对于本地工作目录的正确路径
内容的提问来源于stack exchange,提问作者Luiggi33
相关产品推荐
相关产品推荐

