跨越文件系統邊界、–one-file-system 等的含義
我打算使用 rsnapshot 來備份我的整個 Linux 系統,儘管我對
-x
選項感到困惑(與one_fs
in相同rsnapshot.conf
)。手冊頁說:-x 一個文件系統,不要在每個備份點內跨分區
我知道這不是特定的 rsnapshot 選項,因為 rsync、cp、tar 和其他命令也提供此功能。
文件系統邊界是否指不同的分區?不同的掛載點?不“越過”它們是什麼意思?
回到我的案例,我讀到很多人建議使用
-x
rsnapshot,但我想知道這樣做是否會損害備份的完整性。我想備份位於同一磁碟的專用分區上的所有內容/
,包括/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 系統上存在哪些掛載點?
進行備份時,應避免使用許多文件系統,尤其是:
- 遠端文件系統(NFS、Samba、SSHFS,……);
- 其內容是從執行時數據動態生成的文件系統(
/proc
,/sys
, …);- 文件系統是目錄樹另一部分的視圖(bindfs、avfs、…);
- 包含僅在下次重新啟動前有效的數據的記憶體文件系統(
/tmp
,/dev/shm
, …);- 在任何給定時間可能存在也可能不存在並且不是系統的一部分的可移動媒體。
要備份的文件系統只是與磁碟儲存相對應的文件系統。許多系統只有一個這樣的文件系統,安裝在根目錄上
/
。您可以分辨出哪些文件系統對應於磁碟儲存,因為它們的源(輸出的標題為“文件系統”的第一列,輸出df
之前on
的第一列mount
)是磁碟捲(PC 風格的分區,例如/dev/sda1
LVM 邏輯卷,例如作為/dev/mapper/mygroup-mylogicalvolume
,…)。有一些細微之處可以使確定要備份哪些文件系統比僅查看源以查看它是否在磁碟上更難:
- 不應該備份可移動卷,即使它們在磁碟上。
- Linux 允許將相同的文件系統(或其中的一部分)安裝在多個位置,使用
mount --bind
; 只應備份其中一個。- 列舉所有磁碟捲可能很困難:有加密卷、分佈式儲存卷等。
在您的系統上,要備份的文件系統
/dev/sda7
安裝在/
、/dev/sda6
安裝/boot
和/dev/sda8
安裝在 上/home
。所以你應該告訴 rsnapshot 備份這三個目錄。您幾乎應該始終使用-x
帶有 rsnapshot 的選項。