rsync でファイルを小さなビットに分割し、終了時にそれらを結合するにはどうすればよいですか?

rsync でファイルを小さなビットに分割し、終了時にそれらを結合するにはどうすればよいですか?

私の自宅のインターネットは不安定で、rsync はいつでも切断される可能性があり、大きなファイルは最初からやり直さなければなりません。

たとえば、1 GB のファイルを 50 MB ずつに分割し、送信先に送信してから結合する方法はありますか? そうすれば、ファイルが切り取られても、送信先に一定の割合が保存されます。

答え1

この人はすでに素晴らしい説明をしています: https://unix.stackexchange.com/a/165417/446381

したがって、目標を達成したい場合は、--append-verifyrsync でフラグを使用する必要があります。

私にとっては、これは--partial少し冗長に思えます。隠しファイルとして転送され、後で部分ファイルに名前が変更されます。これは、Ctrl + C によってこの名前変更プロセスが中断される可能性があるため、気に入りません。

答え2

短いバージョン: rsync が中断したところから再開しやすくなるように、--inplaceフラグを追加します。大きなファイルを分割する必要はありません。

長いバージョン:

ファイルを小さなファイルに分割して、それぞれを転送するのは良い考えです。しかし、それはあまりにも大変な作業です。内部的に、rsync はファイルを 64k のチャンクに分割します... ある程度です。rsync必要なことを行う方法があります。--inplaceフラグを追加します。

あなたが抱えているより大きな問題を見てみましょう。インターネット接続が不安定で、大きなファイルを送信する方法が必要です。

--inplaceフラグ ( を意味する)を使用すると、--partial目的の結果が得られます。転送が中断されるたびに、rsyncは、次回 (同じ) を実行したときに中断したところから効率的に続行できる状態にファイルを残しますrsync

--inplaceすべてがコピーされるまで、rsync コマンドを複数回実行するだけです。

非常に心配な場合は、すべてのファイルが正常にコピーされたら、--checksum( -c) フラグを追加してもう一度パスを実行します。これにより、ファイルのタイムスタンプを使用してスキップできるファイルを確認する代わりに、非常に遅いバイトごとの再チェックが実行されます。すべてのファイルがすでに適切にコピーされているため、これ以上の作業は見つからないはずです。とはいえ、私は安心するために時々これを行います。最初の実行中にこのフラグを使用することは望ましくありません。すべてのファイルのすべてのブロックを再読み取りするため、非常に遅くて無駄になるからです。

関連情報