UNIX-Make-Verzeichnis, das scheinbar Inhalte anderer Verzeichnisse enthält

UNIX-Make-Verzeichnis, das scheinbar Inhalte anderer Verzeichnisse enthält

Wenn ich zwei Verzeichnisse habe, a und b, kann mir jemand eine praktische Methode vorschlagen, um ein Verzeichnis zu erstellen, das scheinbar die Inhalte von a und b enthält, ohne dass die Dateien kopiert werden müssen? Momentan verwende ich ln -s *, um eine Menge symbolischer Links zu erstellen und diese dann zu löschen, wenn ich fertig bin. Mir wäre es jedoch lieber, wenn die Inhalte der Unterverzeichnisse scheinbar zusammengeführt wären, und die Verwaltung mit der Methode der symbolischen Links könnte etwas Fummelei erfordern.

Es ist in Ordnung, wenn das resultierende Verzeichnis für die jeweilige Anwendung schreibgeschützt ist.

Antwort1

Sie können effektiv in Verzeichnisse zusammenführen mitUnionFSindem die beiden Verzeichnisse (in diesem Kontext Zweige genannt) in einem einzigen Einhängepunkt überlagert werden.

Es gibt mehrere Implementierungen von UnionFS;UnionFsSicherungist eine der einfacheren, da es eine Anwendung ist (und kein Kernel-Patch).

Die Website enthält einen Link zu ihrem Archiv. Das Kompilieren des Quellcodes sollte bei den meisten Distributionen unkompliziert sein.

Unter Ubuntu genügt es beispielsweise, das PaketUnionFS-Sicherungindem Sie den folgenden Befehl ausführen:

sudo apt-get install unionfs-fuse

Nach der Installation können Sie mit dem Überlagern der Verzeichnisse fortfahren. Es gibt verschiedene Möglichkeiten. Ich erkläre kurz die grundlegendsten:

  • Der Befehl

      unionfs-fuse foo:bar baz
    

    überlagert den Inhalt der VerzeichnissefooUndBarim Verzeichnisbaz. 1

    Dieses Overlay ist schreibgeschützt. Jeder Versuch, eine Datei inbazführt zu einerZugriff verweigert.Fehler. Sie können jedoch weiterhin Dateien erstellen und ändernfooUndBarsich.

    Kollisionen werden auf eine feste Weise behandelt: Wenn eine Datei in einem höheren Zweig existiert (foo), hat sie Vorrang vor einer Datei mit gleichem Namen in einem niedrigeren Zweig (Bar).

  • Der Befehl

      union-fuse foo=RW:bar=RO baz
    

    machtfoobeschreibbar undBar(schreibgeschützt). Das Ändern von Dateien vonfoowird möglich sein, aber das Ändern von Dateien vonBarwird nicht sein. Alle neu erstellten Dateien inbazerscheint infoo.

  • Der Befehl

      union-fuse -ocow foo=RW:bar=RO baz
    

    ist dem letzten Befehl ähnlich. DerKopieren beim Schreibenoption ( cow) bewirkt, dass der Versuch, eine Datei vonBarinnenbazwird eine geänderte Kopie der Datei infoo(oder ein anderer beschreibbarer Zweig höherer Ebene).

  • Mit dem Befehl

      union-fuse foo=RW:bar=RW baz
    

    alle können geändert werden. Neue Dateien werden im obersten Zweig erstellt (foo).

  • Der Befehl

      union-fuse foo=RO:bar=RW baz
    

    ermöglicht das Ändern der Dateien vonBarinnenbaz, aber es können keine neuen Dateien erstellt werden.

  • Der Befehl

      sudo umount baz
    

    löst die Überwurfmutter.

Siehe auch:Mann UnionFS-Sicherung


1 bazmuss vorhanden sein, bevor dieser Befehl ausgeführt wird. Dies gilt auch für alle weiteren Befehle.

verwandte Informationen