Ubuntuでは、大きなファイルをハードドライブからリムーバブルドライブにrsync
でコピーしたいと思います。その他の理由により、操作は1回の実行で完了できません。だから私はrsync
を使って前回中断したところからファイルのコピーを再開する方法を理解しようとしています。
オプション--partial
または--inplace
を使用しようとしましたが、--progress
とともにrsync
が--partial
または--inplace
で実際に開始することがわかりました前回残ったものからではなく、最初から。手動でrsync
を早期に停止し、受信したファイルのサイズを確認しても、私が見つけたことが確認されました。
しかし、--append
を使用すると、rsyncは前回残ったものから始まります。
man page--partial
、--inplace
、および--append
で見たように混乱しています。前回残ったものからのコピーの再開に関連しているようです。誰かが違いを説明できますか?コピーの再開で--partial
または--inplace
が機能しないのはなぜですか?コピーを再開するには、rsync
が--append
オプションを使用する必要があるのは本当ですか?
また、部分的なファイルがrsyncではなくmv
またはcp
によって残された場合、rsync --append
はファイルのコピーを正しく再開しますか?
中断されたコピーを再開するには、rsync --append
を使用する必要があります。 manページの--append
の説明から:
これにより、rsyncはファイルの末尾にデータを追加してファイルを更新します受信側に既に存在するデータは送信側のファイルの先頭と同一であると想定しています。 [ ...]暗黙の
--inplace
、[...]
オプション--inplace
はrsync
に宛先ファイルの内容を直接(上書き)書き込みます。 なし--inplace
、rsync
は次のようになります:
通常の操作モードは、宛先ファイルを開いている可能性のあるアプリケーションとの競合、およびrsync
マンページに正式にリストされているその他のいくつかの事故を主に防ぎます。
手順1.〜3.でコピー/更新操作が失敗した場合は注意してください。上記の場合、rsync
は一時的な宛先ファイルを削除します。 --partial
オプションはこの動作を無効にし、rsync
は部分的に転送された一時ファイルを宛先ファイルシステムに残します。したがって、最初のrsync
を--partial
または--partial-dir
(--partial
と同じ効果に加え、rsync
は、特定のディレクトリにすべての一時ファイルを作成します)。
--append
は--inplace
を意味し、それ自体は--partial
を意味することに注意してください。
--partial
を使用するだけで、rsync
に部分的な転送を残し、以降の試行でそれらを再開する必要があります。
--append
を使用することで、rsync
に部分的なファイルを残させ、次回それらを再開させる必要があります。転送後、rsync
は送信されたデータのチェックサムのみを検証する必要があります。
--append-verify
は、以前の転送で転送された部分を含む、ファイル全体をチェックサム検証に含めます。
--append
または--append-verify
のいずれかを使用すると、チェックサム検証に失敗すると、ファイルが完全に再送信されます(--inplace
を使用)
mv
またはcp
操作はrsync
で再開できるはずですが、安心して--append-verify
オプションを使用することもできます。
--append
を使用すると、rsync
は、レシーバー上のサイズが上のサイズよりも短いファイルのみをコピーすることに注意してください。送信者(タイムスタンプに関係なく)、または受信者に存在しない。このオプションに関するドキュメント:
ファイルを転送する必要があり、受信側のファイルのサイズが送信側のサイズと同じかそれより長い場合、ファイルはスキップされます。
詳細は man page にあります
デビッドシュワルツは正しいです、--partial
(またはより良い、-P
)はあなたが望むことをします。ネットワーク経由で〜8gに停止された37Gファイルでこれを確認しました。 rsyncは、パーシャルの最初の部分をすばやくスキャンし(-P
のおかげで進行状況を示しています)、パーシャルファイルの最後まで転送を再開しました。
あなたは正しくやっていた--partial
はあなたがやりたいことをします。コピーする必要があるファイルデータチャンクのリストの先頭から常に開始されるため、最初から開始されているように見えます。 --append
オプションは危険であり、データが何らかの理由で一致しない場合、ファイルが破損します。
デフォルトでは、ローカルディスクからローカルディスクに転送する場合、rsync
は--whole-file
を有効にします。これにより、中断された転送が最初から再開されます。すでにそこにあるパーツをチェックするのではありません。
これを無効にするには、次を使用します:
--no-whole-file
これを--inplace
または--partial
と組み合わせると、後で転送を再開できます。
rsync
を使用してコピーするための私のエイリアスは次のとおりです。
rscp='rsync -ax --inplace --sparse --no-whole-file --protect-args'
警告:--append-verify
の使用に注意してくださいスキップ同じサイズ以上の宛先ファイル。