まず、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 / ./
他にはほとんどありません。はい、厳密に必要なものよりも少し多くコピーする可能性がありますが、一時的なものとして意図されていないものはすべてコピーされます. rsync の hardlink-to-deduplicate 動作を使用する rsnapshot のため、これに対する唯一の実際のコストは最初の実行時です。その後、適切なサイズの (データ セットの合計サイズと比較して) バックアップ ターゲットの場所があると仮定すると、時間とディスク容量のどちらもほとんど余分にかかりません。 /backup の内容を除外します。これは、バックアップ ターゲット ファイル システムをマウントする場所だからです。除外しないと、バックアップをそれ自体にコピーする状況につながります。ただし、ベア メタルに復元する必要が生じた場合に簡単にするために、マウント ポイントを保持したいと思います!
私の場合、合理的に one_fs 1
を使用することもできません;現在、約 40 のファイル システムで ZFS を実行しています。それらすべてを明示的にリストすることは、メンテナンスの悪夢であり、ZFS ファイル システムの操作が必要以上に複雑になります。
とにかく、上記を超えて除外したいものはほとんどすべてディストリビューションに依存するため、一般的な答えを出すことは事実上不可能です.そうは言っても、/var の下にいくつかの候補が見つかる可能性があります。
あなたがやろうとしていることのほとんどは、おそらく one_fs
を使用するだけで達成できます 設定。バックアップに含めるファイルシステムを設定し、その設定を使用して残りを無視します (proc
、 sys
、 dev
など)。 /lost+found
を含めます 破損したファイルシステムをバックアップしていない限り、そのディレクトリは常に空である必要があるためです。その場合、おそらく fsck
回復しました。また、.pyc
と .pyo
そもそもルートディレクトリにあるべきではないので、それらの行も削除します。 /tmp
と /var/tmp
バックアップから確実に除外できるデータを含む「一般的な」システムに残っている唯一のパスについてです。だから多分次のようなものを試してみてください:
one_fs 1
exclude /tmp/
exclude /var/tmp/