Wie kann ich meinen Home-Ordner von einem anderen Laufwerk aus verknüpfen?

15

Insbesondere möchte ich, dass der Benutzerordner für mein Heimkonto eine andere Festplatte mit mehr Speicherplatz enthält, meine anderen kleineren Konten jedoch auf meiner SSD bleiben. Ich konnte meinen Benutzerordner auf eine andere Festplatte kopieren, aber jetzt muss ich ihn mit dem Home-Ordner auf meiner SSD verknüpfen. Ich möchte, dass er von einem normalen Start aus zugänglich ist, und bitte sagen Sie mir nicht, dass das, was ich getan habe, nicht das war Das Beste, ich möchte nur eine Antwort. Wie kann ich einen Link erstellen, der von / home / username zu / extra-home / username führt und vom System beim Laden der Benutzerordner erkannt wird?

sbergeron
quelle

Antworten:

20

Denken Sie daran, dass Ihre Berechtigungen identisch sein müssen. Zusätzlich zu symlink können Sie in neueren Distributionen und Dateisystemen als root auch bind-mount verwenden:

mkdir /home/username mount --bind --verbose /extra-home/username /home/username

Dies ist nützlich, um den Zugriff "über" das Verzeichnis / home auf Unterverzeichnisse über Dämonen zu ermöglichen, die ansonsten so konfiguriert sind, dass kein Pfad durch Symlinks (Apache, FTPD usw.) erstellt wird.

Sie müssen sich natürlich daran erinnern (oder das Init-Skript), um beim Neustart zu binden.

Joe Atzberger
quelle
Mir war nicht bewusst, dass Symlinks solche Probleme verursachen können. Wie behandeln solche Dämonen /var/run/?
Paul
1
Die Server sollen den Zugriff auf das lokale Dateisystem einschränken, um eine Beeinträchtigung des Systems zu vermeiden. Sie können sich dies als "Dinge vorstellen, die Remotebenutzern erlaubt sind". Sie müssen sich nicht darauf beschränken, auf / var / run (normalerweise beim Starten / Herunterfahren) als "für diesen Prozess zulässige Dinge" zuzugreifen. In der FollowSymLinks-Direktive von Apache finden Sie ein Beispiel dafür, wie das bereitgestellte Dateisystem bei Bedarf Symlinks durchlaufen kann.
Joe Atzberger
Können wir auch / bin und / lib auf die gleiche Weise erweitern (kann in kleinen Dateisystemen nützlich sein)?
Ransh
Benötigt Ihr System /binund /libbei der Initialisierung (dh bevor Sie den mountBefehl ausführen können )? Wenn ja, können Sie diese Strategie nicht anwenden.
Joe Atzberger
2
Hier Informationen hinzufügen, da ich danach suchen musste, sobald dies erledigt ist, um init in / etc / fstab hinzuzufügen, ist hier das Formular. Bei Verwendung der von Joe beschriebenen Methode wäre mount --bind --verbose /extra-home/username /home/usernamedie Zeile in/etc/fstab/extra-home/username /home/username none defaults,bind 0 0
Wilken
9

Nach dieser Frage bei Super User ist dies möglich.

Sie können eine symbolische Verknüpfung erstellen, indem Sie:

ln -s /extra-home/username /home/username

Wenn es aus irgendeinem Grund nicht funktioniert, können Sie einfach den symbolischen Link löschen, das Verzeichnis zurück verschieben und Ihren Computer neu starten.

Louis Matthijssen
quelle
Wenn es sich um einen einfachen Ordner handelt, müssen Sie mit / media / {hardrive_name} / {your folder} beginnen. Ich habe dies gerade auf einem Debian-Server versucht und es funktioniert.
answerSeeker
2

Ich würde das versuchen:

Wenn Sie als anderer Benutzer angemeldet sind sudo -i, kopieren Sie in einer Root-Shell (z. B. ) den Inhalt von /home/usernameto /extra-home/usernameund stellen Sie sicher, dass der neue Speicherort Eigentum von username:

# cp -p /home/username /extra-home/
# chown username:username /extra-home/username

Verschieben Sie das ursprüngliche /home/username/Verzeichnis an einen sicheren Ort:

# mv /home/username /root/

Erstellen Sie den Symlink:

# ln -s /extra-home/username /home/username

Stellen Sie sicher, dass es wie erwartet funktioniert, indem Sie ein anderes Terminalfenster öffnen und ausführen su:

$ sudo su username

Wenn alles gut aussieht, zumindest vom Terminal aus (der Inhalt wird /home/username/wie erwartet angezeigt), melden Sie sich ab und wieder an (ich gehe davon aus, dass Sie sich auf dem Ubuntu-Desktop befinden) und es sollte normal funktionieren. Wenn dies nicht der Fall ist, löschen Sie einfach den Symlink und verschieben Sie den archivierten Basisordner zurück an seinen ursprünglichen Speicherort.

Paul
quelle