Bedeutung des Überschreitens von Dateisystemgrenzen, --one-file-system usw.

9

Ich plane, rsnapshot zu verwenden, um mein gesamtes Linux-System zu sichern, obwohl ich durch die -xOption verwirrt bin (das gleiche wie one_fsin rsnapshot.conf). Die Manpage sagt:

-x ein Dateisystem, keine Partitionen innerhalb jedes Sicherungspunkts kreuzen

Ich verstehe, dass es keine spezielle rsnapshot-Option ist, da rsync, cp, tar und andere Befehle diese Funktion ebenfalls bereitstellen.

Beziehen sich Dateisystemgrenzen auf verschiedene Partitionen? Verschiedene Montagepunkte? Und was bedeutet es, sie nicht zu "überqueren"?

Zurück zu meinem Fall, ich habe viele Leute gelesen, die eine Verwendung -xmit rsnapshot vorschlagen , aber ich frage mich, ob dies die Vollständigkeit meiner Sicherung nicht beeinträchtigen wird. Ich möchte Backup alles unter /, einschließlich /bootund /home, die befinden sich auf dedizierte Partitionen derselben Festplatte, während zur gleichen Zeit will ich nicht zu Backup - Dateien und Verzeichnisse nicht streng auf mein System gehören, wie /mnt, /mediaetc.

Das Ausführen eines mountBefehls auf meinem System gibt die folgende Ausgabe aus. rsnapshot -xWas wird in der Praxis verwendet und was wird ausgelassen?

/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)
Paolo
quelle

Antworten:

12

"Dateisystemgrenzen nicht überschreiten" bedeutet "Nicht in Einhängepunkte schauen". Eine Grenze zwischen Dateisystemen ist ein Einhängepunkt. Im Endeffekt bedeutet dies, dass nur auf die angegebene Partition reagiert wird, außer dass sich nicht alle Dateisysteme auf einer Partition befinden. Siehe Welche Mountpunkte gibt es auf einem typischen Linux-System?

Wenn Sie ein Backup erstellen, sollten Sie eine Reihe von Dateisystemen vermeiden, insbesondere:

  • entfernte Dateisysteme (NFS, Samba, SSHFS,…);
  • Dateisysteme , deren Inhalt im Fluge von Laufzeitdaten erzeugt ( /proc, /sys, ...);
  • Dateisysteme, die eine Ansicht eines anderen Teils des Verzeichnisbaums sind (bindfs, avfs,…);
  • In-Memory - Dateisysteme enthalten Daten , die nur gültig bis zum nächsten Neustart ist ( /tmp, /dev/shm, ...);
  • Wechselmedien, die zu einem bestimmten Zeitpunkt vorhanden sein können oder nicht und nicht Teil des eigentlichen Systems sind.

Die zu sichernden Dateisysteme entsprechen nur dem Speicher auf der Festplatte. Viele Systeme haben nur ein einziges solches Dateisystem, das im Stammverzeichnis bereitgestellt ist /. Sie können feststellen, welche Dateisysteme dem Speicher auf der Festplatte entsprechen, da ihre Quelle (erste Spalte mit dem Titel "Dateisystem" der dfAusgabe, erste Spalte vor onder mountAusgabe) ein Festplatten-Volume (eine Partition im PC-Stil, z. B. /dev/sda1ein logisches LVM-Volume wie z als /dev/mapper/mygroup-mylogicalvolume,…).

Es gibt einige Feinheiten, die es schwieriger machen können, zu bestimmen, welche Dateisysteme gesichert werden sollen, als nur auf die Quelle zu schauen, um festzustellen, ob sie sich auf der Festplatte befindet:

  • Wechseldatenträger sollten nicht gesichert werden, obwohl sie sich auf der Festplatte befinden.
  • Unter Linux kann dasselbe Dateisystem (oder Teile davon) an mehreren Speicherorten mount --bindbereitgestellt werden. Nur einer von ihnen sollte gesichert werden.
  • Es kann schwierig sein, alle Datenträger auf der Festplatte aufzulisten: Es gibt verschlüsselte Datenträger, verteilte Speichervolumes usw.

Auf Ihrem System, um die Dateisysteme zu sichern /dev/sda7montiert /, /dev/sda6montiert auf /bootund /dev/sda8montiert /home. Sie sollten rsnapshot also anweisen, diese drei Verzeichnisse zu sichern. Sie sollten die -xOption fast immer mit rsnapshot verwenden.

Gilles 'SO - hör auf böse zu sein'
quelle
4

Betrachten wir zur Vereinfachung nur zwei Partitionen. Angenommen, das Ausführen hat mounttatsächlich die folgende Ausgabe erzeugt:

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

Dies ist natürlich völlig unrealistisch ( /devwürde nicht bevölkert sein, Tonnen von Sachen hängen von sysfsund procfsusw. ab). Lassen Sie uns das einfach ignorieren.

Das Überschreiten einer Dateisystemgrenze bedeutet, in ein Verzeichnis zu wechseln, in dem sich das zugrunde liegende Dateisystem (das normalerweise der zugrunde liegenden Partition entspricht) unterscheidet. Wenn jemand über das Überschreiten einer Dateisystemgrenze spricht, spricht er normalerweise im Zusammenhang mit dem Durchlaufen des Verzeichnisbaums nach unten oder oben darüber.

Nehmen Sie als Beispiel, was ich meine git. Um herauszufinden, ob ein Verzeichnis ein Git-Repository ist, gitprüfen Sie zunächst, ob sich im aktuellen Arbeitsverzeichnis ein Ordner mit dem Namen ".git" befindet. Wenn ja, handelt es sich um ein Git-Repository. Wenn dies nicht gitder Fall ist, wird die gleiche Überprüfung für das übergeordnete Verzeichnis des aktuellen Verzeichnisses usw. durchgeführt. Standardmäßig prüft Git dies bis zur Dateisystemgrenze (oder sobald es erreicht ist /). An diesem Punkt gibt Git auf und geht davon aus, dass das aktuelle Arbeitsverzeichnis tatsächlich kein Git-Repository ist.

Angenommen , Sie laufen git statusin ~/Desktop. Git prüft, ob es ein ~/Desktop/.gitVerzeichnis gibt ... nein. Git überprüft nun das übergeordnete Verzeichnis: Gibt es ein ~/.git? Nee. Hier kommt der Punkt ins Spiel, an dem Dateisystemgrenzen ins Spiel kommen: Da /homees sich um eine separate Partition handelt /home/.git, gitdie aufgibt , gibt sie auf, gibt eine Warnung an die Konsole aus und geht davon aus, dass das aktuelle Arbeitsverzeichnis kein Git-Repository ist. Es hat sich geweigert, Dateisystemgrenzen zu überschreiten.

strugee
quelle