バックアップの実行を安全に除外できるエントリ


10

rsnapshotに基づくバックアップ戦略を計画しています

復元でシステムが再び機能するのに役に立たないファイルとディレクトリを除いて、システム全体のバックアップを実行したいと考えています。私はすでに除外しました:

# System:
exclude /dev/*
exclude /proc/*
exclude /sys/*
exclude /tmp/*
exclude /run/*
exclude /mnt/*
exclude /media/*
exclude /lost+found

# Application:
exclude /*.pyc
exclude /*.pyo

復元されたシステムを危険にさらすことなく、他のどのエントリを除外リストに追加できるのでしょうか。「一般的な」Linuxシステムについて話すと、さらにglob拡張、一時ディレクトリ、キャッシュなどを提案できますか?安全に除外できますか?

回答:


11

まず、rsyncのinclude / exclude構文を少し読んでください。あなたがやりたいことは**グロブより*グロブを使うほうがいいという感じがします。(**任意の数のエントリに*展開されますが、複数のディレクトリエントリと一致する可能性のある単一のエントリにのみ展開されます。詳細は、「包含/除外パターンルール」にあります。)man rsync

とはいえ、最小限の手間でバックアップからシステムを既知の動作状態に復元できるようにする場合は、ファイルやディレクトリを除外する際に注意が必要です。私は自分でrsnapshotを使用しており、実際には反対のアプローチをとっています。注意深く選択されたいくつかのディレクトリを除いて、すべてを含めます。

したがって、私のrsnapshot.confは実際に次のように述べています(rsnapshotの構成ファイルパーサーを幸せにするためのタブを使用):

interval backup NNN # pick your poison
one_fs 0
exclude /backup/**
exclude /dev/**
exclude /proc/**
exclude /run/**
exclude /sys/**
exclude /tmp/**
backup / ./

それ以外はほとんどありません。はい、それは私が厳密に必要なものよりも少し多くコピーする可能性があることを意味しますが、それはエファマルとして意図されていないものをコピーすることを保証します。rsnapshotがrsyncのハードリンクから重複解除への動作を使用するため、これに対する実際のコストは最初の実行時のみです。その後、適切なサイズ(データセットの合計サイズと比較して)のバックアップターゲットの場所があると仮定すると、時間またはディスク領域の追加はほとんど必要ありません。/ backupの内容は除外します。これは、バックアップターゲットファイルシステムをマウントする場所だからです。それを除外しないと、バックアップをそれ自体にコピーする状況になります。ただし、単純にするために、ベアメタルに復元する必要がある場合は、マウントポイントを保持したいと思います。

私の場合、合理的に使用することもできませんone_fs 1。ZFSは現在約40のファイルシステムで実行しています。これらすべてを明示的にリストすることは、メンテナンスの悪夢となり、ZFSファイルシステムでの作業を必要以上に複雑にします。

上記およびそれ以降に除外したいもののほとんどは、とにかくディストリビューションに依存するため、一般的な答えを出すことは事実上不可能です。そうは言っても、/ varの下に候補が見つかる可能性があります。


1
exclude /somepath/*この場合は問題ありません。/somepath/期待どおり、内のすべてが除外されます。の**すべて/somepath/がすでに除外されている場合は、深く見る必要がないため、必要ありません。
Martin von Wittich、2014年

または、単にexclude /somepath内容ではなく、これらのディレクトリを完全に使用して無視します。
Frank Kusters、2015

4
@spaceknarfマウントポイントが存在しないため、ベアメタルに復元するとマウントが中断されます。
CVn 2015

4

あなたがしようとしていることのほとんどは、おそらくone_fs設定を使用するだけで達成できます。そして、あなたは、バックアップに含めるファイルシステムを設定します(残りの部分を無視して、その設定を使用してprocsysdev、など)。/lost+found破損したファイルシステムをバックアップしていない限り、そのディレクトリは常に空であるため、ここに含めますfsck。また、.pycそして.pyo、本当に最初の場所でルートディレクトリにすべきではないので、私はあまりにもそれらの行を削除したいです。 /tmpそして/var/tmp確実にバックアップから除外することができるデータが含まれている「一般的な」システム上の唯一の残りのパスについてです。だから多分次のようなことを試してください:

one_fs 1

exclude /tmp/
exclude /var/tmp/

私は本当に意味するものではありませんでした/*.pycし、/*.pycしかし、システム全体*.pyc*.pyo、私はそれを修正しました。ただし、にone_fs設定した場合1、必要なものがすべて除外されるかどうかはわかりません。
Paolo

1
システムパッケージがこのようなファイルを使用している場合はどうなりますか?
13

あなたは正しいですが、すべてのファイル.pyが遅かれ早かれ自動的に再コンパイルされると私はほぼ確信しています。
Paolo

3
おそらく、私のシステムでは、そのようなファイルはベンダーパッケージによってインストールされます。つまり、システムがバックアップから復元された場合、パッケージマネージャーがそこにあると考えるファイルは失われます。「一般的な」Linuxシステムの解決策について質問しましたが、そのようなファイルが問題を引き起こすことなく失われる可能性があると常に考えるのは安全ではないと私は思います。
2013

Q.で忘れてしまったことは、データの重複を避けるためにバインドマウントも除外する必要があることです。
Paolo

1

パッケージリスト、/ etc、/ homeの内容、および/ varやその他のユーザー/システムデータを用意する方がよいと思います。通常、パッケージを再インストールして作業構成をコピーして戻す方が高速です。


すべてのシステムファイルの書き込みや構成とメタデータの処理を含むパッケージのインストールが、単にファイルをコピーするよりも速いのはなぜですか?
13

実際のバックアップが必要なときに、システムに関するすべての情報を適切に保存および文書化していないことにも気づくのは、私の経験です。代わりに、復元ではなくレクリエーションに焦点を当てることで、より簡単に、より速く、より頻繁に行うことができます。明らかにYMMV。
Sean Perry、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.