-x
オプション(one_fs
のrsnapshot.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)
「ファイルシステムの境界を越えない」とは、「マウントポイントの内部を調べない」ことを意味します。ファイルシステム間の境界はマウントポイントです。事実上、これは「指定されたパーティションでのみ動作する」ことを意味しますが、すべてのファイルシステムがパーティション上にあるわけではありません。参照 一般的なLinuxシステムにはどのマウントポイントが存在しますか?
バックアップを作成するときは、特に次のような多数のファイルシステムを使用しないでください。
/proc
、/sys
、…)からオンザフライで生成されるファイルシステム/tmp
、/dev/shm
、…);バックアップするファイルシステムは、ディスク上のストレージに対応するものだけです。多くのシステムには、ルートディレクトリ/
にマウントされたファイルシステムが1つだけあります。そのソース(df
出力の「ファイルシステム」というタイトルの最初の列、on
出力のmount
の前の最初の列)により、どのファイルシステムがオンディスクストレージに対応するかを知ることができます。ディスクボリュームです(/dev/sda1
などのPCスタイルのパーティション、/dev/mapper/mygroup-mylogicalvolume
などのLVM論理ボリューム)。
ソースを見てディスク上にあるかどうかを確認するよりも、どのファイルシステムをバックアップするかを決定するのが難しいいくつかの微妙な点があります。
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
は入力されず、多くのものがsysfs
とprocfs
に依存しています)。無視しましょう。
ファイルシステムの境界を越えるとは、基礎となるファイルシステム(通常は基礎となるパーティションに対応する)が異なるディレクトリに変更することを意味します。通常、誰かがファイルシステムの境界を越えることについて話すとき、彼らはディレクトリツリーを下または上にトラバースするコンテキストでそれについて話している。
意味の例として、git
を取り上げます。ディレクトリがGitリポジトリかどうかを判断するために、git
はまず、現在の作業ディレクトリに「.git」というフォルダがあるかどうかを確認します。ある場合は、Gitリポジトリです。存在しない場合、git
は現在のディレクトリの親に対して同じチェックを実行し、以下同様に続きます。デフォルトでは、Gitはこのようにファイルシステムの境界まで(または/
に到達すると)ずっとチェックします。その時点で、Gitはあきらめ、現在の作業ディレクトリが実際にはGitではないと想定しますリポジトリ。
git status
で~/Desktop
を実行するとします。 Gitは~/Desktop/.git
ディレクトリがあるかどうかを確認します...いいえ。 Gitは親ディレクトリを確認します。~/.git
はありますか?いいえ。ファイルシステムの境界が関係するポイントは次のとおりです。/home
は独立したパーティションであるため、/home/.git
をチェックする代わりに、git
はあきらめ、コンソールに警告を出力し、現在の作業ディレクトリはGitリポジトリではありません。ファイルシステムの境界を越えることを拒否しました。