일부 보관 작업을 수행하기 위해 Python에서 rsync를 수행하는 Jenkins 시스템에 이상하고 거의 발생하지 않는 버그가 있습니다.
오류는 다음과 같습니다
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
예를 들어 폴더를 소유하고 폴더에 대한 읽기+쓰기+실행 권한을 가지고 지정된 파일을 폴더에 쓸 수 있어야 하며, 파일이 존재하는 경우 변경할 수 없는 속성을 가지거나 읽기 전용일 수 없습니다(필요함). 쓰기 권한). 또한 폴더는 읽기 전용이 아닌 마운트 디스크/파티션에 있어야 합니다.