仅在目标文件不存在或较旧时,从目录A复制文件至目录B
实现目录A到B的增量复制(仅新增或更新旧文件)
嘿,这个需求其实用系统自带的工具就能完美解决,分两种操作系统给你说最靠谱的实现方式:
Linux/macOS 平台
首选 rsync 命令,它专门为增量同步设计,完全匹配你的需求:
rsync -av --update /path/to/A/ /path/to/B/
参数解释:
-a:归档模式,会保留文件的权限、所有者、修改时间等元数据,同时递归复制子目录-v:verbose模式,同步过程中会显示详细的文件列表,方便你确认操作进度--update:核心参数,只复制两种文件:目标目录B中不存在的文件,或者B中已存在但修改时间比A中对应文件更旧的文件
注意:目录A末尾的斜杠
/很关键!如果不加斜杠,rsync会把整个A目录复制到B里面(变成B/A/...的结构),加了斜杠才会把A里的内容直接同步到B目录下。
Windows 平台
用系统自带的 robocopy 命令(Win7及以上系统默认自带,无需额外安装):
robocopy "C:\Path\To\A" "C:\Path\To\B" /E /XO
参数解释:
/E:递归复制所有子目录,包括空目录/XO:排除比源文件(A中的文件)旧的目标文件(B中的文件),刚好对应你的需求——只同步B中没有的,或者B里版本更旧的文件
如果想要查看更详细的同步日志,可以加上/VERBOSE参数。
额外提醒
- Linux/macOS下如果同步系统目录或者权限较高的文件,可能需要在命令前加
sudo获取权限 - Windows下如果遇到权限限制,可以右键以管理员身份运行命令提示符再执行robocopy
内容的提问来源于stack exchange,提问作者QueryJoe
相关产品推荐
相关产品推荐

