私が見る限り、rsyncは完了するまでターゲットディレクトリにファイルを作成しません。
これは、一時ディレクトリのどこかにファイルを作成し、完了時にターゲットディレクトリにファイルをコピーすることを意味する必要があります。
最初に、これは正しいですか?
Trueの場合、rsyncが一時ディレクトリを使用しないように設定し、代わりにターゲットディレクトリにファイルを作成して、完了するまで書き込みを続けることができますか?
man page に従って、一時ファイルが格納されているディレクトリをパラメータ-Tで指定できます。
-T、--temp-dir = DIRディレクトリDIRに一時ファイルを作成します
質問の2番目の部分への回答もそこにあります。
- 所定の位置に
このオプションは、ファイルのデータを更新する必要があるときにrsyncがファイルを転送する方法を変更します。ファイルの新しいコピーを作成し、完了時にファイルを所定の場所に移動するデフォルトの方法ではなく、rsyncが代わりに更新されたデータを宛先に直接書き込みますファイル。
デフォルトではターゲットディレクトリに.<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
の使用方法に関する大規模なセクションのほんの一部です)。
rsyncは、ターゲットディレクトリに一時ファイルを作成します。そのファイルには、ソースと同じように名前が付けられますが、拡張子が付きます。それはそのようになる可能性があります:
source: foo.bar
target temp: foo.bar.hzmkjt7 (hzmkjt7 is just an example)
ファイルがソースの正確なコピーであることが確認された後、拡張子は削除されます。名前変更プロセスの所有権の間に、権限と変更時間が設定されます。そのため、権限が原因でファイルが表示されない可能性があります。一時ファイルを表示するには、自分が所有していないファイルだけでなく、すべてのファイルを表示するための十分な権限があることを確認してください。