web-dev-qa-db-ja.com

ファイルシステムの境界を越えることの意味--one-file-systemなど

-xオプション(one_fsrsnapshot.confと同じ)と混同されていますが、rsnapshotを使用してLinuxシステム全体をバックアップする予定です。マンページは言う:

-x 1つのファイルシステム、各バックアップポイント内のパーティションをクロスしない

Rsync、cp、tar、その他のコマンドもこの機能を提供しているため、特定のrsnapshotオプションではないことを理解しています。

ファイルシステムの境界は異なるパーティションを参照していますか?別のマウントポイント?そして、それらを「クロス」しないとはどういう意味ですか?

私のケースに戻って、rsnapshotで-xを使用することを提案する多くの人々を読みましたが、そうすることでバックアップの完全性が損なわれないかどうか疑問に思っています。同じディスクの専用パーティションにある//bootを含む/homeの下のすべてをバックアップしたいが、同時にファイルとディレクトリをバックアップしたくない/mnt/mediaなど、厳密には私のシステムに属していない.

システムでmountコマンドを実行すると、次の出力が得られます。実は、rsnapshot -xを使用すると、何が含まれ、何が除外されますか?

/dev/sda7 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/Fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /tmp type tmpfs (rw,noexec,nosuid)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
/dev/sda6 on /boot type ext3 (rw)
/dev/sda8 on /home type ext4 (rw)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
gvfs-Fuse-daemon on /home/myuser/.gvfs type Fuse.gvfs-Fuse-daemon (rw,nosuid,nodev,user=myuser)
9
Paolo

「ファイルシステムの境界を越えない」とは、「マウントポイントの内部を調べない」ことを意味します。ファイルシステム間の境界はマウントポイントです。事実上、これは「指定されたパーティションでのみ動作する」ことを意味しますが、すべてのファイルシステムがパーティション上にあるわけではありません。参照 一般的なLinuxシステムにはどのマウントポイントが存在しますか?

バックアップを作成するときは、特に次のような多数のファイルシステムを使用しないでください。

  • リモートファイルシステム(NFS、Samba、SSHFSなど)
  • コンテンツが実行時データ(/proc/sys、…)からオンザフライで生成されるファイルシステム
  • ディレクトリツリーの別の部分のビューであるファイルシステム(bindfs、avfs、…);
  • 次回の再起動までのみ有効なデータを含むメモリ内ファイルシステム(/tmp/dev/shm、…);
  • 常に存在するかどうかに関係なく、適切なシステムの一部ではないリムーバブルメディア。

バックアップするファイルシステムは、ディスク上のストレージに対応するものだけです。多くのシステムには、ルートディレクトリ/にマウントされたファイルシステムが1つだけあります。そのソース(df出力の「ファイルシステム」というタイトルの最初の列、on出力のmountの前の最初の列)により、どのファイルシステムがオンディスクストレージに対応するかを知ることができます。ディスクボリュームです(/dev/sda1などのPCスタイルのパーティション、/dev/mapper/mygroup-mylogicalvolumeなどのLVM論理ボリューム)。

ソースを見てディスク上にあるかどうかを確認するよりも、どのファイルシステムをバックアップするかを決定するのが難しいいくつかの微妙な点があります。

  • リムーバブルボリュームは、ディスク上にあってもバックアップされるべきではありません。
  • Linuxでは、mount --bindを使用して、同じファイルシステム(またはその一部)を複数の場所にマウントできます。そのうちの1つだけをバックアップしてください。
  • すべてのディスク上のボリュームを列挙するのは難しい場合があります。暗号化されたボリューム、分散ストレージボリュームなどがあります。

システムでは、バックアップするファイルシステムは/dev/sda7にマウントされた//dev/sda6にマウントされた/boot、および/dev/sda8にマウントされた/homeです。したがって、これら3つのディレクトリをバックアップするようにrsnapshotに指示する必要があります。ほとんどの場合、rsnapshotで-xオプションを使用する必要があります。

話を簡単にするために、2つのパーティションについて考えてみましょう。 mountを実行すると、実際に次の出力が生成されたとします。

/dev/sda1 on / type ext4 (rw,errors=remount-ro)
/dev/sda2 on /home type ext4 (rw)

もちろん、これはまったく非現実的です(/devは入力されず、多くのものがsysfsprocfsに依存しています)。無視しましょう。

ファイルシステムの境界を越えるとは、基礎となるファイルシステム(通常は基礎となるパーティションに対応する)が異なるディレクトリに変更することを意味します。通常、誰かがファイルシステムの境界を越えることについて話すとき、彼らはディレクトリツリーを下または上にトラバースするコンテキストでそれについて話している。

意味の例として、gitを取り上げます。ディレクトリがGitリポジトリかどうかを判断するために、gitはまず、現在の作業ディレクトリに「.git」というフォルダがあるかどうかを確認します。ある場合は、Gitリポジトリです。存在しない場合、gitは現在のディレクトリの親に対して同じチェックを実行し、以下同様に続きます。デフォルトでは、Gitはこのようにファイルシステムの境界まで(または/に到達すると)ずっとチェックします。その時点で、Gitはあきらめ、現在の作業ディレクトリが実際にはGitではないと想定しますリポジトリ。

git status~/Desktopを実行するとします。 Gitは~/Desktop/.gitディレクトリがあるかどうかを確認します...いいえ。 Gitは親ディレクトリを確認します。~/.gitはありますか?いいえ。ファイルシステムの境界が関係するポイントは次のとおりです。/homeは独立したパーティションであるため、/home/.gitをチェックする代わりに、gitはあきらめ、コンソールに警告を出力し、現在の作業ディレクトリはGitリポジトリではありません。ファイルシステムの境界を越えることを拒否しました。

4
strugee