web-dev-qa-db-ja.com

rsync-転送中に一時ファイルを作成しますか?

私が見る限り、rsyncは完了するまでターゲットディレクトリにファイルを作成しません。

これは、一時ディレクトリのどこかにファイルを作成し、完了時にターゲットディレクトリにファイルをコピーすることを意味する必要があります。

最初に、これは正しいですか?

Trueの場合、rsyncが一時ディレクトリを使用しないように設定し、代わりにターゲットディレクトリにファイルを作成して、完了するまで書き込みを続けることができますか?

40
Cheetah

はい、一時ファイルを作成します。

man page に従って、一時ファイルが格納されているディレクトリをパラメータ-Tで指定できます。

-T、--temp-dir = DIRディレクトリDIRに一時ファイルを作成します

質問の2番目の部分への回答もそこにあります。

- 所定の位置に

このオプションは、ファイルのデータを更新する必要があるときにrsyncがファイルを転送する方法を変更します。ファイルの新しいコピーを作成し、完了時にファイルを所定の場所に移動するデフォルトの方法ではなく、rsyncが代わりに更新されたデータを宛先に直接書き込みますファイル。

50
superuser0

デフォルトではターゲットディレクトリに.<FILE_NAME>.<RANDOM_STRING>という名前の一時ファイルを作成します。したがって、foo.txtをコピーすると、.foo.txt.GV4H3というtmpファイルが作成されます(GV4H3は、実行するたびに異なるランダムな文字列です)。これらのrsyncオプションを使用して、この動作を制御できます。

   --partial
          By default, rsync will delete any partially transferred
          file if the transfer is interrupted.  In  some  circum‐
          stances  it  is more desirable to keep partially trans‐
          ferred files. Using the --partial option tells rsync to
          keep  the  partial  file which should make a subsequent
          transfer of the rest of the file much faster.

   --partial-dir=DIR
          A better way to keep partial files than  the  --partial
          option  is  to  specify a DIR that will be used to hold
          the partial data (instead of writing it out to the des‐
          tination file).  On the next transfer, rsync will use a
          file found in this dir as data to speed up the  resump‐
          tion  of  the  transfer and then delete it after it has
          served its purpose.

rsync manページの関連部分をお読みください(以下は、--partial-dirの使用方法に関する大規模なセクションのほんの一部です)。

15
terdon

rsyncは、ターゲットディレクトリに一時ファイルを作成します。そのファイルには、ソースと同じように名前が付けられますが、拡張子が付きます。それはそのようになる可能性があります:

source: foo.bar 
target temp: foo.bar.hzmkjt7 (hzmkjt7 is just an example) 

ファイルがソースの正確なコピーであることが確認された後、拡張子は削除されます。名前変更プロセスの所有権の間に、権限と変更時間が設定されます。そのため、権限が原因でファイルが表示されない可能性があります。一時ファイルを表示するには、自分が所有していないファイルだけでなく、すべてのファイルを表示するための十分な権限があることを確認してください。

5
Simon