如果我不使用 --inplace 选项,我很难找到 Rsync 如何“选择”复制文件时创建的临时文件的扩展名。
示例:我想使用 Rsync复制sourceDirectory/myFile.txt
到其中。targetDirectory/
复制myFile.txt
到targetDirectory/
Rsync 时将创建一个.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).