用心打造
VPS知识分享网站

rsync返回code 23,哪些文件没有传成功?

rsync跑完后出现rsync error: some files/attrs were not transferred (code 23),目录里却似乎已经有文件。这个退出码意味着至少一部分传输或属性处理失败,不能只凭目标目录存在就宣布迁移完成。

先保存错误输出和本次命令,找出具体失败路径。不要马上加覆盖或删除参数重跑。

rsync跨服务器传输部分文件失败示意图

退出码23到底说明什么

rsync官方手册将23定义为因错误导致的部分传输。它没有单独指出原因;同一次任务可能同时包含权限拒绝、文件在扫描中消失、目标空间不足或属性无法设置。code 24则是源文件消失引起的部分传输,不能混为一谈。

检查退出码之外,还要回看前面逐条的Permission denied、No space left on device和failed to set times等信息。最后一行只是汇总,不是根因。

保留日志并找出失败项

用原命令重新执行前,先保存已有标准输出和标准错误;下一次可按官方支持的--log-file=/path/rsync.log记录传输日志,结合终端错误输出查找失败文件。检查源路径末尾斜杠、排除规则和目标目录,确保两次运行针对相同数据范围。

日志里的文件名可能含敏感路径。分享给他人前先去除密钥、用户名等信息。

按错误类型逐项修复

权限错误先核对源文件读取权和目标目录写入权;属性错误还要检查目标文件系统是否支持所请求的所有者、权限或时间戳。空间错误同时查看目标文件系统容量和inode使用情况。文件持续变化的目录应安排写入协调或一致性快照。

不要为了让命令返回0而直接使用root、删掉错误文件或取消所有属性选项。修复方式必须符合数据所有权和备份要求。

补传及验收

先在测试目录复现,再用相同的源和目标路径补传;可先使用--dry-run预览动作。生产环境涉及--delete时更要先审查清单,因为它会删除目标端在源端不存在的文件。迁移环境可在萤光云或LightNode的独立VPS上先验证权限与路径。

验收标准是命令正常结束、错误清单清零,且关键文件内容与权限符合业务预期。对重要数据再抽样比对校验和或应用读取结果。

区分内容失败与属性失败

如果错误只涉及设置所有者、组或时间戳,文件内容也许已到达,但目标权限可能不符合应用要求。反过来,某个大文件未完成传输时,目录列表仍会显示其他已复制文件。

按业务要求分别验收内容和元数据。不能因为文件数量相近就忽略无法恢复的权限信息。

FAQ

问:code 23是否表示所有文件都损坏?答:不是,它只表明有部分传输或属性操作失败,需要根据前面的错误逐项判定。

问:重跑后返回0就能删源文件吗?答:还需核验数据范围、重要文件内容和应用可读性,不能仅看退出码。

温馨提示

温馨提示:迁移前留存源端备份和命令记录;涉及删除参数时先在副本上预演,再在维护窗口执行。

赞(0)
未经允许不得转载;国外VPS测评网 » rsync返回code 23,哪些文件没有传成功?
分享到