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

如何使用lftp统计本地与远程目录的文件差异数量

问题场景

编写文件上传脚本时,需要先按规则统计文件数量,再执行本地目录到远程FTP目录的上传操作,核心依赖是上传前拿到本地与远程目录的差异文件计数。
本地环境下可直接使用diff -q dir1/ dir2/ | wc -l统计两个目录的差异文件数,但该命令无法在lftp中运行。

已验证无效的方案
  • 直接在lftp指令中调用diff命令:lftp本身不内置diff命令,执行以下命令无法得到预期结果
lftp -e "set ftp:ssl-allow no; diff -q /XXXXX/Y/ tmp/A_000/ | wc -l; bye" -u username,password remote_storage_url

上述命令中/XXXXX/Y/为远程路径,tmp/A_000/为本地路径。

  • 尝试使用带--dry-run参数的mirror命令统计:实际执行mirror上传时会正常输出待传输文件数量,但添加--dry-run参数后仅展示待删除文件相关信息,不返回待上传新增文件计数,两种场景执行结果如下:
    1. 实际执行mirror命令的输出:
jayesh@ubuntu:~/test$ lftp -e "set ftp:ssl-allow no; mirror -R tmp/A_000/ /XXXXX/Y/ ; bye" -u username,password remote_storage_url
New: 11 files, 0 symlinks                                                                    
19046373 bytes transferred in 50 seconds (371.8 KiB/s)
To be removed: 0 directories, 11 files, 0 symlinks
  1. 添加--dry-run参数的执行输出:
jayesh@ubuntu:~/test$ lftp -e "set ftp:ssl-allow no; mirror -R tmp/A_000/ /XXXXX/Y/ --dry-run ; bye" -u username,password remote_storage_url
mkdir -p ftp://username:password@remote_storage_url/%2F/XXXXX/Y/
To be removed: 0 directories, 11 files, 0 symlinks
可行实现方案

核心问题是--dry-run模式默认不输出详细待传输文件列表,添加-v(verbose)参数即可打印所有待操作的文件条目,再通过本地shell工具过滤统计即可。注意管道、wc这类shell命令不能写在lftp的交互指令内部,要放在lftp进程外层处理标准输出。

统计待上传差异文件数(本地存在、远程缺失/不一致的文件)

执行以下命令即可得到准确计数:

lftp -u username,password remote_storage_url <<EOF
set ftp:ssl-allow no
mirror -R -v --dry-run tmp/A_000/ /XXXXX/Y/
bye
EOF | grep -E '^get ' | wc -l

命令说明:

  • 用here-document方式传入lftp指令,避免多层引号嵌套的转义问题
  • -v参数开启详细输出,dry-run模式下会逐行打印所有待上传文件,每一条待上传记录以get 开头
  • 本地用grep过滤出待上传文件行,wc -l统计行数即为待上传的差异文件总数

扩展:统计待删除差异文件数(远程存在、本地缺失的文件)

如果需要统计双向差异,可执行以下命令得到待删除文件数:

lftp -u username,password remote_storage_url <<EOF
set ftp:ssl-allow no
mirror -R -v --dry-run tmp/A_000/ /XXXXX/Y/
bye
EOF | grep -E '^rm ' | wc -l

优化校验精度

如果需要基于文件内容而非修改时间、文件大小判断差异,可在mirror参数中添加--ignore-time --ignore-size,此时mirror会基于文件校验和判断是否需要传输,统计结果更精准。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 13:24:22