質問: rsync --inplaceはファイル全体に書き込みますか、それとも更新が必要な部分にのみ書き込みますか? (btrfs + rsyncバックアップの場合) 私はbtrfsスナップショットをrsyncと組み合わせて、履歴のある効率的なバックアップソリューションを作成する方法について、いくつかのガイドを読んでいました。ただし、すべてがrsync --inplaceは、実際に変更されたファイルの部分のみを変更するか、ファイル全体を順次上書きするかどうかを変更します。ファイル全体を書き込む場合、btrfsは常にファイルの新しいコピーを作成するため、アイデアの効率が大幅に低下します。
回答: インプレースのrsyncに関する理論的な作業は この論文 で説明されています。論文参照:d. raschおよびr. burns。インプレースrsync:モバイルデバイスとワイヤレスデバイスのファイル同期。 usenix annual technical conference、freenix track、91-100、usenix、2003。リンクから: ...既存のrsync実装を変更して、インプレース再構成をサポートしました。 要約:[...]スペースに制約のあるデバイスで動作するようにrsyncを変更しました。 ターゲットホスト上のファイルは、ファイルの現在のバージョンが使用しているのと同じストレージで更新されます。スペースに制約のあるデバイスは、ファイルの古いバージョンと新しいバージョンの両方にメモリまたはストレージを必要とするため、従来のrsyncを使用できません。例としては、メモリが小さい携帯電話やハンドヘルドpcでのファイルの同期があります。インプレースrsyncアルゴリズムは、グラフ内のファイルの圧縮表現をエンコードし、トポロジ的に並べ替えて、インプレースプロパティを実現します。 [...] したがって、これはrsync --inplaceが行っていることの技術的な詳細のようです。論文の冒頭によると: rsyncを変更して、インプレース再構成でファイル同期タスクを実行できるようにしました。 [...]一時スペースを使用する代わりに、ターゲットファイルへの変更は、現在のバージョンですでに占有されているスペースで行われます。このツールは、スペースが限られているデバイスを同期するために使用されます。 @ datalessの答え から明らかになるように、これは--inplaceは同じストレージスペースを使用していますが、ファイル全体をそのスペースにコピーする場合があります。特に、ローカルファイルシステムとの間でコピーが作成されると、rsyncは--whole-fileオプション。ただし、ネットワークシステム全体の場合は、--no-whole-fileオプション。