rsync は --append-verify オプションを使用して変更されたファイルを検出しません。

rsync は --append-verify オプションを使用して変更されたファイルを検出しません。

rsync私はオプション--checksumと呼び出しを使用しました--append-verify

このオプションの組み合わせの処理方法について私が理解したところ、アプリケーションは次のように実行されます。

  • ファイルがソースのみに存在する場合は、コピー先にコピーして送信されます。

  • ソースとターゲットの両方に存在する場合は、両方のチェックサムを増分的にチェックします。

  • チェックサム計算が分岐する点(コンテンツの不一致を示す)、またはあるファイルが別のファイルの前に終わる時点で、ターゲットの残りのコンテンツがソースから更新されます。

    この意味で残りのコンテンツを更新するには、ターゲットを切り取り、上書きして追加する必要があります。

    --appendこの動作は、ターゲットファイルがソースファイルより短い場合にのみ追加されるようにすることによって発生する動作とは対照的です。

--checksum2つのファイルツリーが同じであることを保証するための意図された方法で、オプションと--append-verify--verbose通常は適切な場合)組み合わせを使用して過去数年間にわたって多数のデータセットで作業した後、そのようなパラメータの組み合わせを使用することは動作ではありません--recurse。知りました。rsync何を期待しています。

rsync奇妙なことに、両側のすべてのファイルのチェックサムを計算するために行の両側で計算を実行するにもかかわらず、2つのファイルの長さが同じである限り、不一致は無視されるようです。

--append-verifyこのオプションの実際の動作と目的(含まれているかどうかにかかわらず)は何で--checksumあり、意図したとおりに識別された動作を達成するにはどうすればよいですか。

最後に、強く反対せずにもっと主観的な質問をすることができれば、私が説明する実際の行動が予期せぬものであるだけでなく、危険だと思う人は私だけですか?*

答え1

簡単に言うと:

  1. --checksumrsync両方のファイルが同じであることを確認する方法です。

  2. --append--append-verifyソースファイルがターゲットファイルより大きい場合にのみ便利です。違いは、転送が完了した後のチェックサム計算にのみあります(上記のオプションには関係ありません)。前者はファイル全体のチェックサムを計算し、後者は追加された部分のチェックサムのみを計算します。 「前」部分の内容が変更されたファイルを使用する場合--append、私が知る限りエラーが発生します。

最近では、さらに合理的なユースケースが見つかりませんでした。唯一のケースは、ログファイルが拡大し続ける場合です。ログファイルの回転の場合、これはとにかく意味がありません。

関連情報