rsync --compare-destの仕組み

rsync --compare-destの仕組み

同様の質問があることがわかります。ここしかし、受け入れられる答えはrsyncとは関係がなく、私の場合、OPソリューションは機能しません。

CentOSリポジトリをリポジトリのディスクバックアップと比較して、ローカルリポジトリと他のすべてのアップデートを取得しようとしています。

rsync -avh --dry-run --compare-dest=/run/media/user/centos6/updates/x86_64/Packages /home/REPOS/6/updates/x86_64/Packages/ updates

しかし、テストの実行は、新しいパッケージだけでなく、すべてのパッケージが転送されることを示しました。

リポジトリからディスクにコピーしたように、別のテスト実行を実行して新しいパッケージのみを転送します。

rsync -avh --dry-run /home/REPOS/6/updates/x86_64/Packages/ /run/media/djones/centos6/updates/x86_64/Packages

したがって、rsyncは明らかに新しいファイルを区別することができますが、何らかの理由で比較ターゲットオプションがまだ機能していないようです。

迅速で汚い解決策は、2番目のコマンドを使用してファイルのリストをダンプしてからrsyncに供給することです。しかし、私は本当に「正しい」方法でやりたいと思います。

答え1

私も同じ問題を経験しました。これを行う必要があります。

rsync -avh --dry-run                                          \
      --compare-dest=/run/media/user/centos6/updates/x86_64/  \
      /home/REPOS/6/updates/x86_64/Packages                   \
      /path/to/updates

ノート --compare-destソースフォルダの親フォルダです。ソースフォルダの最後にPackages入れないでください。/

答え2

次のようなものが必要です。 ( rsync --compare-dest=$local_repo/ $centos_repo/ $differences/ フォルダを変数として定義するか、変数をパスに変更します。パスは/で終わる必要があります。) $differences現在のデータなどに変更することもできます。

centos_repoとlocal_repo(centos_repoがソース)の間のフォルダ内の違いを違いフォルダにコピーします。ディレクトリツリー全体を作成しますが、diffで変更されたファイルのみを挿入します。


誰もがこれをバックアップに使用している場合は、ソース(centos_repo)から削除され、比較(local_repo)のファイルはdiffにコピーされないことに注意してください。

答え3

rsync は、ファイルが「同じ」であるかどうかを決定するときに内容だけをチェックしません。正しく機能させるには、「--no-times」(一度は効果がありました)または「--no-perms」、「--no-owner」、「--no」などのフラグ-groupを使用する必要があります。 「--チェック島」など

https://askubuntu.com/questions/1139188/rsync-compare-dest-does-not-work)

関連情報