「ソース側」では、以下を実行しています。
rsync -azP file.txt username@target:/root/
一度中断し(CTRL + C)、同じコマンドを実行する必要があります。
「宛先側」で次のファイルを見ることができます。
username@target:/root> ls -lah|grep -i file.txt
-rw-r--r-- 1 username group 120G May 3 16:32 file.txt
-rw------- 1 username group 342G May 8 12:47 .file.txt.yISk8R
username@target:/root>
file.txt: 私の考えでは、(?) rsync を一度中断する前に既に送信された部分のようです。
.file.txt.yISk8R:私の考えでは、(?)ワンタイムrsync割り込みが発生した後に送信される部分のようです。
SLES12でrsync-3.1.0-12.1.x86_64を使用する
キュー:ターゲット側のこれら2つのファイルは何ですか?
その後、rsyncが完了すると、「.file.txt.yISk8R」が「file.txt」に追加されますか?
それとももっと複雑ですか? :
「.file.txt.yISk8R」の先頭が元の「file.txt」と同じに見えるため、規則が異なる場合があります。
source:/root # head -1 file.txt|strings|head -1
A_.o
source:/root #
username@target:/root> head -1 .file.txt.yISk8R|strings|head -1
A_.o
username@target:/root>
username@target:/root> head -1 file.txt|strings|head -1
f/o*d
username@target:/root>
転送中に「.file.txt.yISk8R」が大きくなるのがわかります。
でもhttps://linux.die.net/man/1/rsync
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
-z, --compress compress file data during the transfer
-P same as --partial --progress
->
--partial keep partially transferred files
->
--partial
By default, rsync will delete any partially transferred file if the transfer is
interrupted. In some circumstances it is more desirable to keep partially
transferred 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.
元の目的は、これらのファイルが「ターゲット」にコピーされている間、「ターゲット」から別の「ターゲット2」に渡すことです。 ".file.txt.yISk8R"ファイルのコピーを開始する必要がありますか?それでは、「file.txt」のサイズが120Gの理由は何ですか?それともどのような方法でデータが重複していますか?
2019年5月13日更新:これは、ほとんど重複しているようです... したがって、600 GBのファイルをコピーし、例:500 GBで中断すると、rsyncが「-と互換性がないため、ターゲット側に少なくとも1100 GBのストレージ容量が必要です。azP」はほとんど重複したファイル(.file.txt.xxxxxとfile.txt)を生成します。なぜ小さなブロックのハッシュを実行してから、同じハッシュがない最後のブロックに基づいて進行しないのですか?
答え1
プロセスに関するいくつかの背景情報を読むことができます。https://rsync.samba.org/how-rsync-works.html(特に「受信者」セクションで)
ターゲット側のこれら2つのファイルは何ですか?
(最近)同期を開始する前に、最初のファイルがすでに存在していました。以前に同期したことがありますか?デフォルトオプションが使用されていると仮定すると、rsync
同期が完了したと見なされるまで、そのオプションはそのまま残ります。
2番目のファイルは、最新の同期中に使用された一時ファイルです。デフォルトオプションを使用すると、次回実行時にその時点で選択されます。
その後、rsyncが完了すると、「.file.txt.yISk8R」が「file.txt」に追加されますか?
習慣。既存の「file.txt」を削除し、一時ファイルの名前を新しい「file.txt」に変更します。
転送中に「.file.txt.yISk8R」が大きくなるのがわかります。
はい。ファイル転送はアトミックではありません。これが隠されたファイル名が使用される理由です。一般的な状況では、このファイルが変更または不完全になる可能性があるため、このファイルにアクセスしたくありません。
処理を続行するには、一時ファイルを無視する必要があります。 「file.txt」をコピーしてください。この文書は常に一貫して完全でなければなりません(常に最新ではありません)。