我有一个文件夹正在通过 FTP 使用命令进行远程同步(镜像)synchronize -mirror -delete remote
。
我正在同步的文件夹包含 209,068 个文件和 19,079 个目录,因此,即使只是检查所有内容是否已同步,也要花费很长时间。
WinSCP 的做法似乎是每次获取一个文件,然后检查它是否是最新的。如果不是,它会上传它。
这个过程需要很长时间。210K 个文件,ping 时间至少为 50ms,这意味着仅比较文件就需要大约 3 个小时!甚至没有同步。(甚至不考虑实际处理时间)
所以我想知道是否有办法进行批量比较(一次请求 100 个文件的元数据),或者一次创建 100 个请求的缓冲区,这样会更快(大约快 100 倍),也就是 1.8 分钟而不是 3 小时。
如果没有的话,也许我可以使用其他软件来执行此类任务,效果会更好?
编辑:为什么我认为它一次只能处理 1 个文件?运行 sync 命令时,我看到的输出如下:
E:\sync\a.txt -> \Sync\a.txt
不到一秒钟后:
E:\sync\b.txt -> \Sync\b.txt
依此类推,每个文件按目录顺序显示一秒又一秒的部分
编辑2:更正
- 同步文件夹时,它会逐个文件进行。
- 检查文件夹是否同步时,会逐个检查文件夹。
我之前的信息有误,抱歉。
答案1
ftp 和 sftp 在传输大量小文件时都非常慢。
如果可能的话(即如果您有权访问 ssh shell),请尝试使用rsync
,它应该更快,特别是当一些文件先前被传输并且其中只有少数被更改时。
Windows 上有几种 rsync 实现。我建议同步,因为它具有图形界面。