Rsync一時ファイル拡張子

Rsync一時ファイル拡張子

--inplaceオプションを使用しない場合、ファイルをコピーするときにRsyncが生成する一時ファイルの拡張子をどのように「選択する」のかを判断するのに問題があります。

例:Rsyncを使ってコピーしたいですsourceDirectory/myFile.txttargetDirectory/

RsyncmyFile.txtにコピーするtargetDirectory/と。.myFile.txt.W4zvLitargetDirectory/

その後、Rsync.myFile.txt.W4zvLiの名前がmyFile.txt

問題は、RsyncがこのW4zvLi拡張を使用する理由と、Rsyncプログラムが実行されるたびに変更されるように見えるのはなぜですか?

答え1

rsyncはmktemp(3)POSIX関数を使用して一意の一時ファイル名を生成します。この関数にテンプレート文字列を渡すと、テンプレート内のすべての文字が任意の文字に置き換えられたmktempファイル名が返されます。X

特に、コマンドラインで試すには、次のようにバイナリを使用rsyncできます.XXXXXXmktempmktemp(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).

関連情報