Frage Kann ich mehrere Verzeichnisse in einem symbolisieren?


Ich habe das Gefühl, dass ich die Antwort bereits kenne, aber ich dachte, ich würde nachsehen.

Ich habe eine Reihe von verschiedenen Ordnern:

images_a/
images_b/
images_c/

Kann ich eine Art Symlink erstellen, so dass dieses neue Verzeichnis den Inhalt all dieser Verzeichnisse enthält? Das ist das neue "images_all"würde alle Dateien enthalten images_a, images_b und images_c?


21
2018-01-08 05:05


Ursprung


Antworten:


Nein. Sie müssten alle einzelnen Dateien symbolisch verknüpfen.

Was du könnte do ist es, einen Job zu erstellen, der periodisch ausgeführt wird und im Prinzip alle bestehenden symbolischen Links entfernt images_all, dann erstellen Sie die Links für alle Dateien aus den drei anderen Verzeichnissen neu, aber es ist ein bisschen wie ein Kludon, etwa so:

rm -f images_all/*
for i in images_[abc]/* ; do; ln -s $i images_all/$(basename $i) ; done

Beachten Sie, dass während der Ausführung dieses Jobs anderen Prozessen angezeigt wird, dass die Dateien vorübergehend nicht mehr vorhanden sind.

Sie müssen auch auf den Fall achten, in dem ein einzelner Dateiname in zwei oder mehreren Verzeichnissen existiert.


Nachdem ich nach einiger Zeit auf diese Frage zurückgekommen bin, fällt mir auch ein, dass Sie die Zeit minimieren können, während der die Dateien nicht verfügbar sind.

Wenn Sie sie mit einem verknüpfen anders Verzeichnis dann relativ schnell mv Operationen, die die Zeit minimieren würden. Etwas wie:

mkdir images_new
for i in images_[abc]/* ; do
    ln -s $i images_new/$(basename $i)
done

# These next two commands are the minimal-time switchover.
mv images_all images_old
mv images_new images_all

rm -rf images_old

Ich habe das nicht getestet, also muss jemand, der es implementiert, die Eignung oder sonstwie bestätigen.


11
2018-01-08 05:11



Sie könnten ein gewerkschaftliches Dateisystem wie unionfs ausprobieren!

http://www.filesystems.org/project-unionfs.html

http://aufs.sourceforge.net/


8
2018-01-08 05:19