以前のバックアップがあるターゲットにディレクトリをバックアップしますか?

以前のバックアップがあるターゲットにディレクトリをバックアップしますか?

私のラップトップのいくつかのディレクトリを外付けハードドライブにバックアップしたいと思います。

外付けハードドライブのターゲットには、すでに自分のラップトップにあるディレクトリの以前のバックアップがあります。

  1. 外付けハードドライブのバックアップを更新する方法を知りたいです。たとえば、次のコマンドは期待どおりに機能しますか?

    rsync -a --delete  /path/to/source/dir  /path/to/dest/dir
    

    rm -r /path/to/dest/dir/*最初は私と同じように動作しますかrsync -a /path/to/source/dir /path/to/dest/dir

  2. rsyncターゲットで以前のバックアップを活用してエラーなしで新しいバックアップをすばやく作成するにはどうすればよいですか(一部のファイルは最後のバックアップ以降に変更された可能性がありますが、それ以上のファイルは変更されません)。以前のバックアップを利用するもう1つの理由は、何も削除せずに新しいバックアップを保存するための外付けハードドライブの容量が不足しているためです。

ありがとうございます。

答え1

はい、rsyncそれは良い解決策ですが、使用する方が良いです(末尾のスラッシュを参照)。

rsync -a --delete  /path/to/source/dir/  /path/to/dest/dir/

引用するにはman rsync

ソースの末尾のスラッシュは、ターゲットに追加のディレクトリレベルが生成されないようにこの動作を変更します。ソースの末尾/を「名前でディレクトリをコピーする」ではなく、「このディレクトリの内容をコピーする」と考えることができます[...]

ミラー(まったく同じファイル)を使用すると、--deleteミラーがない場合は追加のバックアップを取得できます(ソースから削除されたファイルはコピーに残ります)。

--delete間違ったディレクトリをターゲットにすると、多くのファイルが削除される可能性があるため、テスト済みのスクリプトにのみ使用を制限するか、-n/を使用して--dry-run最初に何が起こるかを確認するのが最善です。

答え2

  1. ターゲットで以前のバックアップを利用して、rsyncにエラーなしで新しいバックアップをすばやく作成させるにはどうすればよいですか(一部のファイルは最後のバックアップ以降に変更された可能性がありますが、それ以上のファイルは変更されません)。

デフォルトでは、バックアップはrsyncこれを行います。もしあなたは合格しました-a(そして正しいパスを見つけるために@xenoidの答えに従いました)。とにかく合格したい-aので、みんないいですね。具体的な理由は少し微妙です。

Rsyncは、サイズまたは最後の変更時間が変更されたファイルを検索する「クイックチェック」アルゴリズム(デフォルト)を使用して、転送する必要があるファイルを見つけます。

rsyncがファイルを転送する必要がないと思う場合、ファイルを転送しません。これは、次のオプションが暗示されているために機能します-a

    -t, --times                 preserve modification times

したがって、最後に変更された時間は同じバックアップファイルの内容は元のファイルの内容と同じです。

間違えないでください

rsyncファイルの内容を修正してから、最後の修正時間をリセットして偽にしないでください。 :-).それ以外の場合、ファイルは無視されます。

私はこの問題について聞いたことがないので心配しません。rsyncこの方法は通常、デフォルトのバックアップに使用されます。

他の制限が発生する可能性が高いと予想されます。つまり、ファイルシステムのスナップショットを使用せずに$ HOMEをバックアップすると、バックアップの実行中にFirefoxプロファイルが変更され、バックアップで一貫して機能するFirefoxプロファイルが得られない可能性があります。または、削除/上書きしたファイルを復元したいが、以前のバックアップを保持していないため、バックアップから削除/上書きすることができます。

関連情報