rsyncが最新のファイルであっても、ターゲットのファイルを強制的に上書きします。

rsyncが最新のファイルであっても、ターゲットのファイルを強制的に上書きします。

私が要求したときにファイルを元の場所に復元するrsyncバックアップスクリプトを実行しました。ただし、復元しようとしたときにターゲットのファイルがバックアップのファイルよりも最新の場合、そのファイルは置き換えられません。最新のファイルをバックアップファイルに置き換えたいのですが、rsyncを使用してこれを行う方法を見つけることができませんでした。

tldr:rsyncがターゲットのファイルを強制的に上書きする方法はありますか?

編集する:rsync -avhpバックアップを復元しようとすると実行中です。同じコマンドを使用しますが、「to」と「from」を置き換えます。そのため、バックアップドライブのファイルを自分のコンピュータ上の場所にコピーしようとしています。

ベストアンサー1

このマニュアルには次のように記載されています。

-I, --ignore-times   don't skip files that match size and time

詳細は:

-I, --ignore-times

通常、rsyncはすでに同じサイズで、同じ変更タイムスタンプを持つファイルをスキップします。このオプションは、この「クイックチェック」アクションをオフにして、すべてのファイルが更新されるようにします。

この方法も効果があるかもしれません(これを指摘したAttilaに感謝します)。

--checksum, -c   skip based on checksum, not mod-time & size

これは、rsyncがファイルが変更されたかどうかを確認する方法を変更します。このオプションがない場合、rsync は「クイックチェック」(デフォルト)を使用して、送信者と受信者の間の各ファイルサイズと最後の変更時刻が一致することを確認します。このオプションは、各ファイルの128ビットチェックサムを一致するサイズと比較するようにこの設定を変更します。チェックサムを作成することは、両当事者が転送中のファイルのすべてのデータを読み取るために多くのディスクI / Oを消費することを意味するため、これは作業速度を大幅に遅くします(変更されたファイルの転送中に読み取りが発生する前です) )。

送信者は、利用可能なファイルのリストを作成するためにファイルシステムチェックを実行すると、チェックサムを生成します。受信者は、変更されたファイルを検索しながらチェックサムを生成し、その送信者のファイルと同じサイズのファイルをチェックサムします。転送用にサイズまたはチェックサムが変更されたファイルを選択します。

rsync は、ファイルの転送時に生成されたファイルの全チェックサムをチェックし、送信された各ファイルが受信側で正しく再構成されていることを常に確認しますが、自動転送後の確認はこのオプションとは無関係です。 the-transfer "このファイルを更新する必要がありますか?"ビュー。

使用されるチェックサムはクライアントとサーバー間で自動的にネゴシエートされますが、--checksum-choice(--cc)オプションまたはそのオプションのセクションで説明されている環境変数を使用してオーバーライドできます。

--deleteソースディレクトリに存在しないターゲットファイルを削除したい場合は、このフラグに言及することをお勧めします。

別の便利なオプションは、-n実際のコピーや削除なしでrsyncの機能をまねることです。リストのみ可能です。自分がやっていることが100%確かでないときにとても便利です。

おすすめ記事