本文目录导读:

- rsync (Linux/macOS/Windows WSL)
- Robocopy (Windows 原生)
- Syncthing (跨平台图形化)
- FreeFileSync (Windows/macOS/Linux 图形化)
- Git (版本控制场景)
- 手动脚本(Python 示例)
- 最佳实践建议
要实现增量同步中只同步新增和修改的文件(即跳过未变化的文件),核心在于工具能识别文件的变化状态(如修改时间、大小、校验和),以下是几种常见工具的具体配置方法:
rsync (Linux/macOS/Windows WSL)
最经典的增量同步工具,默认行为就是只同步变化的部分。
# 基本命令(-a 归档模式保留权限,-v 显示详情,-u 跳过较新的文件) rsync -avu /源目录/ /目标目录/ # 更严格的基于校验和的同步(忽略时间戳,只比较内容) rsync -avc /源目录/ /目标目录/ # 带排除的同步(排除 .git 目录) rsync -avu --exclude='.git/' /源目录/ /目标目录/
关键参数:
-u:跳过目标目录中比源更新的文件(防止覆盖新文件)-c:使用校验和比较(更慢但更准确)--delete:删除目标中源不存在的文件(慎用)
Robocopy (Windows 原生)
Windows 自带的强大同步工具,支持多线程和增量模式。
# 仅同步新文件和修改的文件(/XO 排除旧文件) robocopy C:\源目录 D:\目标目录 /E /XO /R:3 /W:10 # 更严格的校验(/M 只复制有归档属性的文件) robocopy C:\源目录 D:\目标目录 /E /M /R:3 /W:10
关键参数:
/E:复制子目录(包括空目录)/XO:排除比目标更旧的文件/XC:排除时间戳完全一致的文件/NP:不显示进度(适合脚本)/R:3 /W:10:失败重试3次,等待10秒
Syncthing (跨平台图形化)
适合多设备实时同步,默认就是增量同步。
- 设置方法:添加文件夹后,在“高级设置”中确保 “文件版本控制” 设置为“无”(或根据需要配置)
- 自动检测文件变化:监控文件系统事件,只同步变更部分
FreeFileSync (Windows/macOS/Linux 图形化)
用户友好的图形工具,支持精准的增量同步。
- 在“同步设置”中选择 “镜像” 或 “更新”
- 比较方式选择 “文件时间和大小” 或
- 会自动跳过无变化文件,只复制新增/修改的文件
Git (版本控制场景)
如果文件是代码或文档,Git 的 commit 和 push 天然只传送变化:
# 查看变更(未提交的文件) git status # 提交并推送变更 git add -A git commit -m "增量更新" git push
手动脚本(Python 示例)
如果需要高度定制,可以用 Python 脚本实现精简增量同步:
import os
import shutil
import hashlib
def md5(file_path):
"""计算文件MD5"""
hash_md5 = hashlib.md5()
with open(file_path, "rb") as f:
for chunk in iter(lambda: f.read(4096), b""):
hash_md5.update(chunk)
return hash_md5.hexdigest()
def sync(src, dst):
"""只同步新增和修改的文件"""
for root, dirs, files in os.walk(src):
rel_path = os.path.relpath(root, src)
dst_dir = os.path.join(dst, rel_path)
os.makedirs(dst_dir, exist_ok=True)
for file in files:
src_file = os.path.join(root, file)
dst_file = os.path.join(dst_dir, file)
# 如果目标不存在或MD5不同,则同步
if not os.path.exists(dst_file) or md5(src_file) != md5(dst_file):
shutil.copy2(src_file, dst_file)
print(f"已同步: {src_file}")
sync("/path/to/source", "/path/to/destination")
最佳实践建议
- 先做一次全量同步,后续只用增量模式
- 设置合理的比较策略:一般文件修改时间和大小足够,敏感场景用校验和
- 注意权限和环境:Windows 建议用 Robocopy,Linux 用 rsync
- 先测试:用
--dry-run(rsync)或/L(Robocopy)查看会同步哪些文件而不实际执行
根据你的具体需求(跨平台、命令行/图形化、性能要求等),选择最合适的工具即可。
标签: 新增修改文件
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。