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


36

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

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

まず、これは正しいですか?

trueの場合、rsyncは一時ディレクトリを使用せずに設定し、代わりにターゲットディレクトリにファイルを作成し、完了するまでファイルに書き込み続けることは可能ですか?

回答:


45

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

マニュアルページによると、次のようにパラメータ-Tを使用して、一時ファイルが保存されるディレクトリを指定できます。

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

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

- 所定の位置に

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


4
重要な注意点!質問はrsyncが「ファイルを所定の位置にコピーする」ことを前提としていますが、rsyncのドキュメントではrsyncが実際に「所定の位置に移動する」と規定しています。これはIMORTANT DISTINCTIONです。これにより、ファイルが宛先の場所にアトミックに表示されます。これは、宛先ファイルが表示されるのを別のアプリケーションが待っており、読み取り用にすぐに開くが、ファイルのコピーが完了しないという競合状態を防ぐのに役立ちます。
オーガ詩sal 33

15

デフォルトでは、ターゲットディレクトリにという名前の一時ファイルを作成します.<FILE_NAME>.<RANDOM_STRING>。したがって、コピーしている場合foo.txt、tmpファイルが作成されます.foo.txt.GV4H3GV4H3実行するたびに異なるランダムな文字列です)。次の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マニュアルページの関連部分を読んでください(以下は、使用方法に関する大きなセクションのほんの一部--partial-dirです)。


5

rsyncは、ターゲットディレクトリに一時ファイルを作成します。そのファイルは、ソースと同じ名前ですが、拡張子が付いています。次のようになります。

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

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


プロセスは、それを実行するユーザーの権限でファイルを作成します。この場合の許可のため、ファイルを表示しないことはできません。
ЯрославРахматуллин

@ЯрославРахматуллинrsyncは、デーモンモードでも実行できます。または、cronジョブとしてスケジュールできます。いずれにせよ、rsyncを実行しているユーザーが一時ファイルを見たいユーザーではない可能性があります。その場合、許可の問題である可能性があります。
サイモン

1
一時ファイルは「。」で始まる場合があります。この場合、それは.foo.bar.hzmkjt7です。
interskh
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.