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

rsync同步到多级嵌套远程目录报错code12,是什么原因导致的?

rsync同步失败问题解答

失败原因

你的猜测是正确的,rsync默认仅支持自动创建目标路径的最后一级目录,不会递归创建不存在的多级父目录。
第二次执行命令时,远程/home/pantelis/目录为空,目标路径/home/pantelis/my-work/terragrunt/modules/的父级目录my-work、my-work/terragrunt均不存在,rsync无法在不存在的路径下创建最末级的modules目录,进而触发rsync协议数据流错误(错误码12)。

--relative参数未生效的原因

--relative(-R)参数需要配合源路径的相对标记使用,才能正确保留并同步目录层级,你之前的用法没有标记需要保留的目录结构起点,因此没有生效。

可行解决方案

  • 方案1:提前创建远程父目录
    先通过ssh在远程递归创建所有需要的父目录,再执行rsync同步:
    ssh my-server "mkdir -p /home/pantelis/my-work/terragrunt/modules/"
    
    之后再运行你原来的第二条rsync命令即可正常执行。
  • 方案2:正确使用--relative参数同步完整目录结构
    在源路径中用./标记需要保留的目录结构起点,目标路径直接写远程根目录即可,rsync会自动创建所有层级的目录:
    rsync -zalPR --progress --exclude=.git --exclude=.vscode /Users/pantelis/Workspace/./my-work/terragrunt/modules/ my-server:/home/pantelis/
    
    执行后会自动在远程生成完整的/home/pantelis/my-work/terragrunt/modules/路径,内容和本地对应目录完全一致。
  • 方案3:通过--rsync-path参数自动创建父目录
    无需提前执行ssh命令,直接在rsync参数中指定远程执行同步前先创建所需目录:
    rsync -zalP --progress --exclude=.git --exclude=.vscode --rsync-path="mkdir -p /home/pantelis/my-work/terragrunt/modules/ && rsync" /Users/pantelis/Workspace/my-work/terragrunt/modules/ my-server:/home/pantelis/my-work/terragrunt/modules/
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:45:04