GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ein gebundenes Reittier?

Was ist ein „bind mount“? Wie mache ich einen? Wozu ist es gut?

Mir wurde gesagt, ich solle ein Bindungsreittier für etwas verwenden, aber ich verstehe nicht, was es ist oder wie man es benutzt.

Akzeptierte Antwort:

Was ist ein Bindungsreittier?

Ein bindendes Reittier ist eine alternative Ansicht eines Verzeichnisbaums. Klassischerweise erstellt das Mounten eine Ansicht eines Speichergeräts als Verzeichnisbaum. Ein Bind-Mount nimmt stattdessen einen vorhandenen Verzeichnisbaum und repliziert ihn unter einem anderen Punkt. Die Verzeichnisse und Dateien im Bind-Mount sind die gleichen wie im Original. Jede Änderung auf einer Seite wird sofort auf der anderen Seite widergespiegelt, da beide Ansichten die gleichen Daten zeigen.

Beispielsweise nach Ausgabe des Linux-Befehls-

mount --bind /some/where /else/where

die Verzeichnisse /some/where und /else/where denselben Inhalt haben, nämlich den Inhalt von /some/where . (Falls /else/where war nicht leer, sein vorheriger Inhalt ist nun ausgeblendet.)

Anders als ein fester Link oder ein symbolischer Link wirkt sich ein Bind-Mount nicht darauf aus, was im Dateisystem gespeichert ist. Es ist eine Eigenschaft des Live-Systems.

Wie erstelle ich ein Bind-Mount?

bindfs

Das bindfs filesystem ist ein FUSE-Dateisystem, das eine Ansicht eines Verzeichnisbaums erstellt. Zum Beispiel der Befehl

bindfs /some/where /else/where

macht /else/where Ein Einhängepunkt, unter dem der Inhalt von /some/where liegt sind sichtbar.

Da bindfs ein separates Dateisystem ist, werden die Dateien /some/where/foo und /else/where/foo als unterschiedliche Dateien für Anwendungen erscheinen (das bindfs-Dateisystem hat sein eigenes st_dev Wert). Jede Änderung auf der einen Seite wird auf der anderen Seite „magisch“ widergespiegelt, aber die Tatsache, dass die Dateien gleich sind, wird nur offensichtlich, wenn man weiß, wie bindfs arbeitet.

Bindfs hat keine Kenntnis von Einhängepunkten, also wenn es einen Einhängepunkt unter /some/where gibt , erscheint es einfach als ein weiteres Verzeichnis unter /else/where . Mounten oder Unmounten eines Dateisystems unter /some/where erscheint unter /else/where als Wechsel des entsprechenden Verzeichnisses.

Bindfs kann einige der Dateimetadaten ändern:Es kann gefälschte Berechtigungen und Eigentumsrechte für Dateien anzeigen. Einzelheiten finden Sie im Handbuch und unten finden Sie Beispiele.

Ein bindfs-Dateisystem kann als Nicht-Root-Benutzer gemountet werden, Sie benötigen nur die Berechtigung zum Mounten von FUSE-Dateisystemen. Abhängig von Ihrer Distribution muss dies möglicherweise in der fuse sein Gruppe oder für alle Benutzer zugelassen werden. Verwenden Sie zum Aushängen eines FUSE-Dateisystems fusermount -u statt umount , z. B.

fusermount -u /else/where

nullfs

FreeBSD stellt das nullfs zur Verfügung Dateisystem, das eine alternative Ansicht eines Dateisystems erstellt. Die folgenden zwei Befehle sind äquivalent:

mount -t nullfs /some/where /else/where
mount_nullfs /some/where /else/where

Nachdem Sie einen der beiden Befehle ausgegeben haben, /else/where wird zu einem Einhängepunkt, an dem der Inhalt von /some/where sind sichtbar.

Da nullfs ein separates Dateisystem ist, werden die Dateien /some/where/foo und /else/where/foo als unterschiedliche Dateien für Anwendungen erscheinen (das nullfs-Dateisystem hat sein eigenes st_dev Wert). Jede Änderung auf der einen Seite wird auf der anderen Seite „magisch“ widergespiegelt, aber die Tatsache, dass die Dateien gleich sind, wird nur offensichtlich, wenn man weiß, wie nullfs arbeitet.

Im Gegensatz zu FUSE bindfs, das auf der Ebene des Verzeichnisbaums agiert, agiert FreeBSDs nullfs tiefer im Kernel, also Mountpunkte unter /else/where sind nicht sichtbar:nur der Baum, der Teil desselben Einhängepunkts ist wie /some/where wird unter /else/where widergespiegelt .

Das nullfs-Dateisystem kann unter anderen BSD-Varianten (OS X, OpenBSD, NetBSD) verwendet werden, ist jedoch nicht als Teil des Standardsystems kompiliert.

Linux-Bind-Mount

Unter Linux sind Bind Mounts als Kernel-Funktion verfügbar. Sie können eine mit dem mount erstellen Befehl, indem Sie entweder den --bind übergeben Befehlszeilenoption oder bind Mount-Option. Die folgenden zwei Befehle sind äquivalent:

mount --bind /some/where /else/where
mount -o bind /some/where /else/where

Hier das „Gerät“ /some/where ist keine Festplattenpartition wie bei einem Dateisystem auf der Festplatte, sondern ein vorhandenes Verzeichnis. Der Einhängepunkt /else/where muss wie üblich ein bestehendes Verzeichnis sein. Beachten Sie, dass in beiden Fällen kein Dateisystemtyp angegeben ist:Das Erstellen eines Bind-Mounts erfordert keinen Dateisystemtreiber, es kopiert die Kernel-Datenstrukturen vom ursprünglichen Mount.

mount --bind unterstützt auch das Einhängen eines Nicht-Verzeichnisses in ein Nicht-Verzeichnis:/some/where kann eine normale Datei sein (in diesem Fall /else/where muss auch eine normale Datei sein).

Ein Linux-Bind-Mount ist meistens nicht vom Original zu unterscheiden. Der Befehl df -T /else/where zeigt dasselbe Gerät und denselben Dateisystemtyp wie df -T /some/where . Die Dateien /some/where/foo und /else/where/foo sind ununterscheidbar, als wären sie harte Links. Es ist möglich, /some/where auszuhängen , in diesem Fall /else/where bleibt montiert.

Bei älteren Kerneln (ich weiß nicht genau wann, ich glaube bis etwa 3.x) waren Bind-Mounts wirklich nicht vom Original zu unterscheiden. Neuere Kernel verfolgen Bind-Mounts und legen die Informationen über PID offen /mountinfo, was findmnt erlaubt um Bind Mount als solches anzuzeigen.

Sie können Bind-Mount-Einträge in /etc/fstab einfügen . Fügen Sie einfach bind hinzu (oder rbind usw.) in den Optionen, zusammen mit allen anderen gewünschten Optionen. Das „Gerät“ ist der vorhandene Baum. Die Dateisystemspalte kann none enthalten oder bind (Es wird ignoriert, aber die Verwendung eines Dateisystemnamens wäre verwirrend). Zum Beispiel:

/some/where /readonly/view none bind,ro

Wenn es Einhängepunkte unter /some/where gibt , ihr Inhalt ist unter /else/where nicht sichtbar . Statt bind , können Sie rbind verwenden , replizieren Sie auch Einhängepunkte unter /some/where . Wenn beispielsweise /some/where/mnt ist dann ein Einhängepunkt

mount --rbind /some/where /else/where

entspricht

mount --bind /some/where /else/where
mount --bind /some/where/mnt /else/where/mnt

Außerdem erlaubt Linux, Mounts als gemeinsam zu deklarieren , Sklave , privat oder unbindable . Dies wirkt sich darauf aus, ob diese Mount-Operation unter einem Bind-Mount widergespiegelt wird, das den Mount-Punkt repliziert. Weitere Details finden Sie in der Kernel-Dokumentation.

Linux bietet auch eine Möglichkeit, Mounts zu verschieben:wobei --bind Kopien, --move verschiebt einen Einhängepunkt.

Es ist möglich, unterschiedliche Mount-Optionen in zwei bind-gemounteten Verzeichnissen zu haben. Es gibt jedoch eine Eigenart:Das Einhängen der Bindung und das Einstellen der Einhängeoptionen können nicht atomar erfolgen, es müssen zwei aufeinanderfolgende Vorgänge sein. (Ältere Kernel erlaubten dies nicht.) Beispielsweise erstellen die folgenden Befehle eine schreibgeschützte Ansicht, aber es gibt ein kleines Zeitfenster, in dem /else/where ist schreibgeschützt:

mount --bind /some/where /else/where
mount -o remount,ro,bind /else/where

Ich kann Bindungsreittiere nicht zum Laufen bringen!

Wenn Ihr System FUSE nicht unterstützt, besteht ein klassischer Trick, um denselben Effekt zu erzielen, darin, einen NFS-Server auszuführen und die Dateien, die Sie verfügbar machen möchten, zu exportieren (Zugriff auf localhost zu ermöglichen). ) und montieren Sie sie auf demselben Computer. Dies hat einen erheblichen Mehraufwand in Bezug auf Speicher und Leistung zur Folge, daher haben Bind-Mounts einen eindeutigen Vorteil, sofern verfügbar (was dank FUSE bei den meisten Unix-Varianten der Fall ist).

Verwandte:Wie debuggt man ein Bash-Skript?

Anwendungsfälle

Schreibgeschützte Ansicht

Es kann nützlich sein, eine schreibgeschützte Ansicht eines Dateisystems zu erstellen, entweder aus Sicherheitsgründen oder einfach als Sicherheitsebene, um sicherzustellen, dass Sie es nicht versehentlich ändern.

Mit bindfs:

bindfs -r /some/where /mnt/readonly

Unter Linux ganz einfach:

mount --bind /some/where /mnt/readonly
mount -o remount,ro,bind /mnt/readonly

Dadurch bleibt ein kurzes Zeitintervall, in dem /mnt/readonly ist schreibgeschützt. Wenn dies ein Sicherheitsproblem darstellt, erstellen Sie zuerst den Bind-Mount in einem Verzeichnis, auf das nur Root zugreifen kann, machen Sie ihn schreibgeschützt und verschieben Sie ihn dann an einen öffentlichen Mount-Punkt. Beachten Sie im folgenden Snippet, dass es wichtig ist, dass /root/private (das Verzeichnis über dem Einhängepunkt) ist privat; die ursprünglichen Berechtigungen auf /root/private/mnt sind irrelevant, da sie hinter dem Einhängepunkt versteckt sind.

mkdir -p /root/private/mnt
chmod 700 /root/private
mount --bind /some/where /root/private/mnt
mount -o remount,ro,bind /root/private/mnt
mount --move /root/private/mnt /mnt/readonly

Benutzer und Gruppen neu zuordnen

Dateisysteme zeichnen Benutzer und Gruppen anhand ihrer numerischen ID auf. Manchmal haben Sie mehrere Systeme, die derselben Person unterschiedliche Benutzer-IDs zuweisen. Dies ist kein Problem beim Netzwerkzugriff, aber es macht Benutzer-IDs bedeutungslos, wenn Sie Daten auf einer Festplatte von einem System zu einem anderen übertragen. Angenommen, Sie haben eine Festplatte, die mit einem Mehrbenutzer-Dateisystem (z. B. ext4, btrfs, zfs, UFS, …) auf einem System erstellt wurde, auf dem Alice die Benutzer-ID 1000 und Bob die Benutzer-ID 1001 hat, und Sie möchten diese Festplatte zugänglich machen ein System, in dem Alice die Benutzer-ID 1001 und Bob die Benutzer-ID 1000 hat. Wenn Sie die Festplatte direkt mounten, werden die Dateien von Alice als im Besitz von Bob erscheinen (weil die Benutzer-ID 1001 ist) und die Dateien von Bob werden als im Besitz von Alice erscheinen (weil die Benutzer-ID ist 1000).

Sie können binfs verwenden, um Benutzer-IDs neu zuzuordnen. Mounten Sie zuerst die Festplattenpartition in einem privaten Verzeichnis, wo nur root darauf zugreifen kann. Erstellen Sie dann eine bindfs-Ansicht in einem öffentlichen Bereich mit einer Neuzuordnung von Benutzer-ID und Gruppen-ID, die die Benutzer-IDs und Gruppen-IDs von Alice und Bob vertauscht.

mkdir -p /root/private/alice_disk /media/alice_disk
chmod 700 /root/private
mount /dev/sdb1 /root/private/alice_disk
bindfs --map=1000/1001:1001/1000:@1000/1001:@1001/1000 /root/private/alice_disk /media/alice_disk

Siehe Wie greift man zulässigerweise auf Dateien im Home-Ordner des Benutzers eines nicht gebooteten Systems zu? und mount – binde andere Benutzer als mich selbst ein weiteres Beispiel.

Montage in einem Gefängnis oder Container

Ein Chroot-Jail oder Container führt einen Prozess in einem Unterbaum des Verzeichnisbaums des Systems aus. Dies kann nützlich sein, um ein Programm mit eingeschränktem Zugriff auszuführen, z. Betreiben eines Netzwerkservers mit Zugriff nur auf seine eigenen Dateien und die Dateien, die er bedient, aber nicht auf andere Daten, die auf demselben Computer gespeichert sind). Eine Einschränkung von Chroot besteht darin, dass das Programm auf einen Unterbaum beschränkt ist:Es kann nicht auf unabhängige Unterbäume zugreifen. Bind-Mounts ermöglichen das Aufpfropfen anderer Unterbäume auf diesen Hauptbaum. Dies macht sie grundlegend für die praktischste Verwendung von Containern unter Linux.

Angenommen, eine Maschine führt den Dienst /usr/sbin/somethingd aus die nur Zugriff auf Daten unter /var/lib/something haben soll . Der kleinste Verzeichnisbaum, der diese beiden Dateien enthält, ist das Stammverzeichnis. Wie kann der Dienst eingeschränkt werden? Eine Möglichkeit besteht darin, feste Links zu allen Dateien zu erstellen, die der Dienst benötigt (mindestens /usr/sbin/somethingd und mehrere gemeinsam genutzte Bibliotheken) unter /var/lib/something . Dies ist jedoch umständlich (die festen Links müssen aktualisiert werden, wenn eine Datei aktualisiert wird) und funktioniert nicht, wenn /var/lib/something und /usr befinden sich auf unterschiedlichen Dateisystemen. Eine bessere Lösung besteht darin, ein Ad-hoc-Root zu erstellen und es mit mounts zu füllen:

mkdir /run/something
cd /run/something
mkdir -p etc/something lib usr/lib usr/sbin var/lib/something
mount --bind /etc/something etc/something
mount --bind /lib lib
mount --bind /usr/lib usr/lib
mount --bind /usr/sbin usr/sbin
mount --bind /var/lib/something var/lib/something
mount -o remount,ro,bind etc/something
mount -o remount,ro,bind lib
mount -o remount,ro,bind usr/lib
mount -o remount,ro,bind usr/sbin
chroot . /usr/sbin/somethingd &

Die Mount-Namespaces von Linux verallgemeinern Chroots. Bind-Mounts ermöglichen es, Namespaces auf flexible Weise zu füllen. Ein Beispiel finden Sie unter Einen Prozess dazu bringen, eine andere Datei mit demselben Dateinamen zu lesen.

Eine andere Distribution ausführen

Eine weitere Verwendung von Chroots besteht darin, eine andere Distribution in einem Verzeichnis zu installieren und Programme von dort aus auszuführen, selbst wenn sie Dateien in fest codierten Pfaden benötigen, die auf dem Basissystem nicht vorhanden sind oder einen anderen Inhalt haben. Dies kann beispielsweise nützlich sein, um eine 32-Bit-Distribution auf einem 64-Bit-System zu installieren, das gemischte Pakete nicht unterstützt, um ältere Versionen einer Distribution oder anderer Distributionen zu installieren, um die Kompatibilität zu testen, um eine neuere Version zum Testen zu installieren die neuesten Funktionen unter Beibehaltung eines stabilen Basissystems usw. Siehe Wie führe ich 32-Bit-Programme auf einem 64-Bit-Debian/Ubuntu aus? für ein Beispiel auf Debian/Ubuntu.

Angenommen, Sie haben eine Installation der neuesten Pakete Ihrer Distribution im Verzeichnis /f/unstable , wo Sie Programme ausführen, indem Sie mit chroot /f/unstable in dieses Verzeichnis wechseln . Um Home-Verzeichnisse von diesen Installationen verfügbar zu machen, binden Sie sie in die Chroot ein:

mount --bind /home /f/unstable/home

Das Programm schroot erledigt dies automatisch.

Zugriff auf Dateien, die hinter einem Einhängepunkt versteckt sind

Wenn Sie ein Dateisystem in ein Verzeichnis einhängen, verbirgt dies, was sich hinter dem Verzeichnis befindet. Auf die Dateien in diesem Verzeichnis kann erst zugegriffen werden, wenn das Verzeichnis ausgehängt wird. Da BSD-Nullfs- und Linux-Bind-Mounts auf einer niedrigeren Ebene als die Mount-Infrastruktur arbeiten, legt ein Nullfs-Mount oder ein Bind-Mount eines Dateisystems Verzeichnisse offen, die im Original hinter Submounts verborgen waren.

Verwandt:Aktualisieren Sie die Werte einer Datei mithilfe von Informationen aus einer anderen Datei?

Angenommen, Sie haben ein tmpfs-Dateisystem, das unter /tmp gemountet ist . Wenn es Dateien unter /tmp gab Als das tmpfs-Dateisystem erstellt wurde, können diese Dateien immer noch vorhanden sein, effektiv unzugänglich sein, aber Speicherplatz beanspruchen. Ausführen

mount --bind / /mnt

(Linux) oder

mount -t nullfs / /mnt

(FreeBSD), um eine Ansicht des Root-Dateisystems unter /mnt zu erstellen . Das Verzeichnis /mnt/tmp ist diejenige aus dem Root-Dateisystem.

NFS-Exporte auf verschiedenen Pfaden

Einige NFS-Server (z. B. der Linux-Kernel-NFS-Server vor NFSv4) kündigen immer den tatsächlichen Verzeichnisspeicherort an, wenn sie ein Verzeichnis exportieren. Das heißt, wenn ein Client server:/requested/location anfordert stellt der Server den Baum am Standort /requested/location bereit . Manchmal ist es wünschenswert, Clients zu erlauben, /request/location anzufordern aber tatsächlich Dateien unter /actual/location bereitstellen . Wenn Ihr NFS-Server das Bereitstellen eines alternativen Standorts nicht unterstützt, können Sie einen Bind-Mount für die erwartete Anfrage erstellen, z. B.

/requested/location *.localdomain(rw,async)

in /etc/exports und das Folgende in /etc/fstab :

/actual/location /requested/location bind bind

Ein Ersatz für symbolische Links

Manchmal möchten Sie einen symbolischen Link erstellen, um eine Datei /some/where/is/my/file zu erstellen erscheinen unter /else/where , sondern die Anwendung, die file verwendet erweitert symbolische Links und weist /some/where/is/my/file zurück . Ein Bind-Mount kann dies umgehen:bind-mount /some/where/is/my zu /else/where/is/my , und dann realpath wird /else/where/is/my/file melden unter /else/where sein , nicht unter /some/where .

Nebenwirkungen von gebundenen Reittieren

Rekursive Verzeichnisdurchläufe

Wenn Sie Bind-Mounts verwenden, müssen Sie sich um Anwendungen kümmern, die den Dateisystembaum rekursiv durchlaufen, wie z. B. Backups und Indexierung (z. B. um eine Ortungsdatenbank zu erstellen).

Normalerweise sollten Bind-Mounts von rekursiven Verzeichnisdurchläufen ausgeschlossen werden, sodass jeder Verzeichnisbaum nur einmal am ursprünglichen Speicherort durchlaufen wird. Konfigurieren Sie bei bindfs und nullfs das Traversal-Tool so, dass diese Dateisystemtypen nach Möglichkeit ignoriert werden. Linux-Bind-Mounts können nicht als solche erkannt werden:Der neue Speicherort entspricht dem Original. Bei Linux-Bind-Mounts oder bei Tools, die nur Pfade und keine Dateisystemtypen ausschließen können, müssen Sie die Mount-Punkte für die Bind-Mounts ausschließen.

Durchläufe, die an Dateisystemgrenzen enden (z. B. find -xdev , rsync -x , du -x , …) werden automatisch angehalten, wenn sie auf einen bindfs- oder nullfs-Einhängepunkt stoßen, da dieser Einhängepunkt ein anderes Dateisystem ist. Bei Linux-Bind-Mounts ist die Situation etwas komplizierter:Es gibt nur dann eine Dateisystemgrenze, wenn das Bind-Mount ein anderes Dateisystem einbindet, nicht, wenn es einen anderen Teil desselben Dateisystems einpfropft.

Über Bind Mounts hinausgehen

Bind-Mounts bieten eine Ansicht eines Verzeichnisbaums an einem anderen Ort. Sie legen dieselben Dateien offen, möglicherweise mit unterschiedlichen Mount-Optionen und (mit bindfs) unterschiedlichen Eigentümern und Berechtigungen. Dateisysteme, die eine veränderte Ansicht eines Verzeichnisbaums darstellen, werden als Overlay-Dateisysteme bezeichnet oder stapelbare Dateisysteme . Es gibt viele andere Overlay-Dateisysteme, die fortgeschrittenere Transformationen durchführen. Hier sind ein paar gängige. Wenn Ihr gewünschter Anwendungsfall hier nicht behandelt wird, überprüfen Sie das Repository von FUSE-Dateisystemen.

  • loggedfs – protokolliert den gesamten Dateisystemzugriff zu Debugging- oder Überwachungszwecken (Konfigurationsdateisyntax, Ist es möglich herauszufinden, welches Programm oder Skript eine bestimmte Datei erstellt hat?, Listet die Dateien auf, auf die ein Programm zugreift)

Sichtbare Dateien filtern

  • clamfs – Dateien durch einen Virenscanner laufen lassen, wenn sie gelesen werden

  • filterfs — verbirgt Teile eines Dateisystems

  • rofs – eine schreibgeschützte Ansicht. Ähnlich wie bindfs -r , nur etwas leichter.

  • Union-Mounts – präsentiert mehrere Dateisysteme (genannt Zweige ) unter einem einzelnen Verzeichnis:if tree1 enthält foo und tree2 enthält bar dann enthält ihre Vereinigungsansicht sowohl foo und bar . Neue Dateien werden in einen bestimmten Zweig geschrieben oder in einen nach komplexeren Regeln ausgewählten Zweig. Es gibt mehrere Implementierungen dieses Konzepts, darunter:

    • aufs — Linux-Kernel-Implementierung, aber viele Male vom Upstream abgelehnt
    • funionfs – FUSE-Implementierung
    • mhddfs – FUSE, schreibt Dateien basierend auf freiem Speicherplatz in einen Zweig
    • Overlay – Linux-Kernel-Implementierung, zusammengeführt in Linux v3.18
    • unionfs-fuse – FUSE, mit Caching- und Copy-on-Write-Funktionen

Dateinamen und Metadaten ändern

  • ciopfs – Dateinamen ohne Berücksichtigung der Groß-/Kleinschreibung (kann nützlich sein, um Windows-Dateisysteme einzuhängen)
  • convmvfs — konvertiert Dateinamen zwischen Zeichensätzen (Beispiel)
  • posixovl — speichert Unix-Dateinamen und andere Metadaten (Berechtigungen, Eigentum, …) auf eingeschränkteren Dateisystemen wie VFAT (Beispiel)

Geänderte Dateiinhalte anzeigen

  • avfs — Präsentieren Sie für jede Archivdatei ein Verzeichnis mit dem Inhalt des Archivs (Beispiel, weitere Beispiele). Es gibt auch viele FUSE-Dateisysteme, die bestimmte Archive als Verzeichnisse verfügbar machen.
  • fuseflt — Dateien beim Lesen durch eine Pipeline laufen lassen, z.B. um Textdateien oder Mediendateien zu rekodieren (Beispiel)
  • lzopfs — transparente Dekomprimierung komprimierter Dateien
  • mp3fs – Transkodiert FLAC-Dateien in MP3, wenn sie gelesen werden (Beispiel)
  • scriptfs — führt Skripte aus, um Inhalte bereitzustellen (eine Art lokales CGI) (Beispiel)

Ändern Sie die Art und Weise, wie Inhalte gespeichert werden

  • chironfs – repliziert Dateien auf mehrere zugrunde liegende Speicher (RAID-1 auf Verzeichnisbaumebene)
  • copyfs — behalte Kopien aller Versionen der Dateien
  • encfs – Dateien verschlüsseln
  • pcachefs – On-Disk-Cache-Layer für langsame entfernte Dateisysteme
  • simplecowfs — speichert Änderungen über die bereitgestellte Ansicht im Speicher, wobei die Originaldateien intakt bleiben
  • wayback — behalte Kopien aller Versionen der Dateien

Linux
  1. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  2. Bash =~ Regex und Https://regex101.com/?

  3. Mounten Sie /tmp und /home, um die Festplatte zu trennen?

  4. Installieren Sie Binärdateien in /bin, /sbin, /usr/bin und /usr/sbin, Interaktionen mit --prefix und DESTDIR

  5. Wann sollte ich /dev/shm/ verwenden und wann sollte ich /tmp/?

Django static_root in /var/www/... - keine Berechtigungen für collectstatic

unix:///var/run/supervisor.sock keine solche Datei

Nur Binding-Mounts auflisten

/sys/ Dokumentation?

Warum sind < oder > erforderlich, um /dev/tcp

Wie mache ich 'mount --bind' in /etc/fstab?