You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LFTP反向镜像使用exclude参数时误删远程全部文件求助

问题原因与解决办法

核心错误:--delete参数位置错误

你出错的根源是把无参数开关选项--delete放在了--exclude之后、源目录之前,导致LFTP错误地将后续的本地源路径当成--delete的参数,进而完全识别错了同步的源目录和目标目录。此时LFTP认为要同步的源目录是空的,结合--delete(删除远程不存在于本地的文件)的逻辑,就会删除远程服务器上的所有文件。

正确的命令写法

mirror命令的所有选项(包括--delete、--exclude)必须放在源目录和目标目录之前,且--delete作为无参数开关,不能紧跟路径。同时注意LFTP的--exclude默认使用正则表达式,若想用更直观的shell glob匹配,建议改用--exclude-glob。

写法一(正则匹配):

lftp sftp://user:pass@host-p 22 -e 'set sftp:connect-program "ssh -o StrictHostKeyChecking=no -a -x -i /home/.ssh/yourkey.key"; 
mirror -eRv --delete 
--exclude "\.vscode/" 
--exclude ".*\.clpprj" 
--exclude ".*\.scprj" 
--exclude "database/scripts/" 
/media/sparky/Artwork/Web/Sites/space-art.co.uk/ /spaceart; quit;'

写法二(glob匹配,更易读):

lftp sftp://user:pass@host-p 22 -e 'set sftp:connect-program "ssh -o StrictHostKeyChecking=no -a -x -i /home/.ssh/yourkey.key"; 
mirror -eRv --delete 
--exclude-glob .vscode/ 
--exclude-glob *.clpprj
--exclude-glob *.scprj
--exclude-glob database/scripts/ 
/media/sparky/Artwork/Web/Sites/space-art.co.uk/ /spaceart; quit;'

补充说明

  • PHP调用脚本的代码本身没有问题,只要修正shell脚本中的LFTP命令即可正常运行。
  • 使用--exclude-glob时,无需转义特殊字符(如.、*),写法和普通shell通配符一致,更符合日常使用习惯。

内容的提问来源于stack exchange,提问作者Mark Garlick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 20:50:54