我们的 Jenkins 机器上有一个奇怪的、很少发生的错误,这些机器从 python 执行 rsync 来执行一些归档任务。
错误是:
rsync: rename "/OLD_PATH/internal/.my_config.json.MfXl7i" -> "internal/my_config.json": Permission denied (13)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1207) [sender=3.1.3]
其错误的命令是:
rsync -az --no-p --no-g --chmod=ugo=rwX NEW_PATH/ OLD_PATH
returned non-zero exit status 23
在 rsync 调用之前由 python 脚本的其余部分编写的文件是“my_config.json”。文件名之前的点和结尾的“MfXl7i”来自哪里?为什么 rsync 明显改变文件终止?
预先非常感谢。
答案1
相关错误信息在第一行:
rsync: rename "internal/.my_config.json.MfXl7i" -> "internal/my_config.json": Permission denied (13)
这意味着该rsync
命令可以同步数据,但不能写入新文件。
您对该文件有写权限吗internal/my_config.json
?也许该文件存在并且受到写保护,或者不属于您?
您可以通过查看该文件及其包含的文件夹来找到答案:
# ls -ld internal internal/my_config.json
您需要能够将指定文件写入该文件夹,例如通过拥有该文件夹,对该文件夹具有读+写+执行权限,并且如果该文件存在,则它不能具有不可变属性或只读(您需要写入权限)。此外,该文件夹需要驻留在非只读安装的磁盘/分区上。