如果我不使用 --inplace 选项,我很难找到 Rsync 如何“选择”复制文件时创建的临时文件的扩展名。
示例:我想用 Rsync复制sourceDirectory/myFile.txt
到targetDirectory/
。
虽然复制myFile.txt
到targetDirectory/
Rsync的将创建一个名为文件.myFile.txt.W4zvLi
在targetDirectory/
。
然后 Rsync 将重命名.myFile.txt.W4zvLi
为myFile.txt
.
问题是为什么 Rsync 使用W4zvLi
扩展以及为什么每次执行 Rsync 程序时它似乎都会改变?
rsync 使用mktemp(3)
POSIX 函数生成唯一的临时文件名。您将模板字符串传递给mktemp
函数,它将返回一个文件名,X
模板中的任何字符都被随机字符替换。
特别是,rsync
传递.XXXXXX
到mktemp
. 如果你想从命令行尝试一下,你可以mktemp(1)
像这样使用二进制文件:
mktemp -u "/tmp/foo.XXXXXX"
Run Code Online (Sandbox Code Playgroud)