--inplace 옵션을 사용하지 않는 경우 파일을 복사할 때 Rsync가 생성하는 임시 파일의 확장자를 어떻게 "선택"하는지 알아내는 데 문제가 있습니다.
예: Rsync를 사용하여 복사하고 싶습니다 sourceDirectory/myFile.txt
.targetDirectory/
Rsync myFile.txt
에 복사 targetDirectory/
하면 ..myFile.txt.W4zvLi
targetDirectory/
그러면 Rsync .myFile.txt.W4zvLi
의 이름이 myFile.txt
.
문제는 Rsync가 이 W4zvLi
확장을 사용하는 이유와 Rsync 프로그램이 실행될 때마다 변경되는 것처럼 보이는 이유는 무엇입니까?
답변1
rsync는 mktemp(3)
POSIX 함수를 사용하여 고유한 임시 파일 이름을 생성합니다. 이 함수에 템플릿 문자열을 전달하면 템플릿의 모든 문자가 임의의 문자로 대체된 mktemp
파일 이름이 반환됩니다 .X
특히, 명령줄에서 시도하려면 다음과 같이 바이너리를 사용할 rsync
수 .XXXXXX
있습니다 .mktemp
mktemp(1)
mktemp -u "/tmp/foo.XXXXXX"
답변2
남성 동기화:
Beginning with rsync 3.1.1, the temp-file names inside
the specified DIR will not be prefixed with an extra dot (though
they will still have a random suffix added).