Symlink von einer Workstation zur anderen ohne Mount

8

Ich versuche, einen Symlink einer Datei auf einer Linux-Workstation zu einer anderen Linux-Workstation zu erstellen, ohne Netzwerkfreigaben "mounten" zu müssen. Folgendes versuche ich zu tun, kann es aber nicht zum Laufen bringen.

ln -s /link/to/local/file.mov //10.0.1.103/sharedFolder/symlinkFile.mov
Speedyrazor
quelle
1
Sie müssen -seinen Symlink erstellen. Andernfalls versuchen Sie, eine feste Verbindung herzustellen, und diese können nur auf demselben Dateisystem hergestellt werden.
Deltab
Entschuldigung, ich habe das -s verpasst. Ich habe es jetzt hinzugefügt.
Speedyrazor
Was passiert eigentlich, wenn Sie sagen, dass es nicht funktioniert? //10.0.1.103Und was verwenden Sie, um auf eine andere Maschine zu verweisen, und nicht nur auf ein Unterverzeichnis von /aufgerufen 10.0.1.103?
Deltab
Ich habe die Frage aktualisiert, um zu zeigen, dass auf //10.0.1.103 (der anderen Linux-Workstation im selben Netzwerk) ein freigegebener Ordner (sharedFolder) vorhanden ist. Kann ich also, anstatt diesen freigegebenen Ordner zu mounten, direkt darauf verlinken, wie Sie es auf einem Windows-PC können?
Speedyrazor
Wenn Sie keine Netzwerkfreigabe bereitgestellt haben, "baumelt" der Symlink-Zeiger. Warum willst du das tun?
SHW

Antworten:

14

Sie können nicht:

Ein Symlink ist einfach ein zusätzlicher Inode (eine Struktur, die auf die Datei verweist), und dieser Inode besteht unter anderem aus a deviceIdund an inode pointer. Das deviceIdverweist effektiv auf eine Gerätespezialdatei im /devVerzeichnis und inode pointerauf einen Block auf diesem Gerät.

Ihr Netzwerkstandort von 10.0.1.103hat keinen und kann keinen haben deviceId(er ist nicht in /dev), daher können Sie möglicherweise keinen Symlink zu einem Netzwerkstandort haben.

Auf der anderen Seite verfügt eine bereitgestellte Netzwerkfreigabe über eine deviceId, weshalb Sie einen Symlink zu einem bereitgestellten Speicherort erstellen können.

garethTheRed
quelle
1
Nicht die Antwort, die ich wollte, aber ehrlich und klar, Prost.
Speedyrazor
1
So funktionieren Symlinks nicht.
Michael Homer
@ MichaelHomer +1 Für eine korrekte Erklärung der symbolischen Links siehe stackoverflow.com/questions/16912997
stek29
7

Windows hat eine spezielle Syntax, dh die Datei auf dem Computer, die über das SMB- Protokoll aufgerufen wird . Dies ist in das Betriebssystem integriert und auf ein Netzwerkprotokoll spezialisiert.\\MACHINE\DIRECTORY…\FILE\DIRECTORY…\FILE\\MACHINE

Linux hat ein flexibles Dateisystem basiert auf dem Begriff der Montage . Dateisysteme werden an ein vorhandenes Verzeichnis angehängt, und der Administrator kann auswählen, wie die Verzeichnishierarchie angeordnet werden soll. Weitere Hintergrundinformationen finden Sie unter Was bedeutet das Mounten eines Geräts unter Linux? , Warum Linux - Dateisystem wird als ein einzelner Verzeichnisbaum entworfen? und Welche Mountpunkte gibt es auf einem typischen Linux-System? . Linux unterstützt viele Netzwerkdateisysteme (dh Dateisysteme, mit denen ein Computer auf Dateien auf einem anderen Computer zugreifen kann), einschließlich NFS , SMB, SSHFS usw.

NFS kann als das native Netzwerk-Dateisystem von Linux betrachtet werden, so wie SMB das von Windows ist. Linux exportiert seine Dateien jedoch nicht standardmäßig: Sie müssen einen NFS-Server installieren. Ein NFS-Server ist in allen Linux-Distributionen verfügbar, erfordert jedoch einige Einstellungen (Sie müssen die Verzeichnisse, die Sie exportieren möchten, in der Datei registrieren /etc/exports). Darüber hinaus stammt NFS aus einer sanfteren Zeit, als Angreifer im lokalen Netzwerk kein Problem darstellten, und für die Sicherung ist ein wenig Wissen über Firewalls erforderlich, das über den Rahmen dieser Antwort hinausgeht. Führen Sie den folgenden Befehl als root /some/whereaus, um das Verzeichnis vom Remotecomputer foo.example.comam Speicherort verfügbar zu machen /local/dir(bei dem es sich um ein vorhandenes Verzeichnis handeln muss), vorausgesetzt, es wird vom Remotecomputer exportiert:

mount foo.example.com:/some/where /local/dir

Der einfache Weg, auf Remote-Dateien ohne Setup zuzugreifen, ist über SSHFS. Sie müssen lediglich einen SSH-Server auf dem Remotecomputer und das sshfsPaket auf dem lokalen Computer installieren . Sie sollten auch einen Schlüssel generieren (siehe So funktioniert die Anmeldung ohne Passwort ), obwohl Sie dies nicht tun müssen , wenn es Ihnen nichts ausmacht, jedes Mal Ihr Passwort einzugeben. SSH ist außerdem nützlich, um Befehle auf dem Remotecomputer auszuführen. Führen Sie den folgenden Befehl aus (wie Ihr üblicher Benutzer), um das Verzeichnis /some/wherevom Remotecomputer foo.example.comam Speicherort /local/dir(der ein vorhandenes Verzeichnis sein muss) über SSHFS verfügbar zu machen :

sshfs foo.example.com:/some/where /local/dir

Linux kann über die Samba- Software ein Server oder ein Client für das SMB-Protokoll sein (Kommunikation mit Windows-Computern oder sogar mit anderen Linux-Computern, obwohl es weniger gut integriert ist als andere Protokolle) .

Sie können einen Automounter (z. B. autofs) so einrichten, dass beim Zugriff auf bestimmte Verzeichnisse Verzeichnisse von einem Remotecomputer automatisch bereitgestellt werden. Zum Beispiel einer gemeinsamen Konfiguration anordnet , dass die autofs - Dateisystem auf dem Verzeichnis angebracht ist /net, und der Zugriff bewirkt , dass das Remote - Verzeichnis aus , um an dieser Stelle über NFS eingebunden wird (und es wird nach einer gewissen Zeit der Inaktivität deaktiviert werden). Auf dem Remotecomputer muss natürlich ein NFS-Server eingerichtet sein, der diese Verbindung zulässt./net/MACHINE/DIRECTORY/DIRECTORY/net/MACHINE

Es ist möglich, einen Automounter mit SSHFS einzurichten. Siehe Totally Seamless SSHFS unter Linux mit Fuse und Autofs sowie Autofs und sshfs - das perfekte Paar für schnelle Tutorials. in einer Nussschale:

  1. Installieren Sie autofsund sshfs.
  2. Fügen Sie die folgende Zeile hinzu /etc/auto.master:

    /mnt/sshfs /etc/auto.sshfs uid=1000,gid=1000,--timeout=30,--ghost
    

    Ersetzen Sie die beiden Vorkommen von 1000 durch Ihre Benutzer-ID und Gruppen-ID (führen Sie diese Werte aus id -uund id -gzeigen Sie sie an). Erstellen Sie das Verzeichnis /mnt/sshfs.

  3. Erstellen Sie eine Datei /etc/auto.sshfsmit Zeilen wie den folgenden:

    machinename -fstype=fuse,rw,nodev,nonempty,noatime,allow_other,max_read=65536 :sshfs\#machinename.example.com\:
    

    wo machinename.example.comist der Host - Name (oder IP - Adresse) der Remote - Maschine und machinenameist der Name , den Sie wollen , dass es für den Zugriff auf lokal, über den Weg /mnt/sshfs/machinename.

Autosshfs bietet eine bequemere Einrichtung von autofs + sshfs.

Schließlich zum symbolischen Teil: Sie können eine symbolische Verknüpfung zu einem nicht vorhandenen Pfad erstellen. Der symbolische Link ist das zweite Argument, also brauchen Sie so etwas

ln -s /net/10.0.1.103/sharedFolder/symlinkFile.mov /link/to/local/file.mov

Sie müssen manuell oder automatisch veranlassen, dass /sharedFoldervon 10.0.1.103an montiert wird /net/10.0.1.103/sharedFolder.

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

Für das, was es wert ist ...

Ich habe an einem kleinen Tool namens Lionfs gearbeitet, das auf Raphael S. Carvalhos GhostFS basiert . Ziel ist es, symbolische Links zuzulassen, die auf eine URI verweisen . Es ist ziemlich unvollständig, hat viele Probleme und unterstützt derzeit nur HTTP. FUSE (Dateisystem im Userspace) wird verwendet, um den Hintergrund zu behandeln.

Ricardo Biehl Pasquali
quelle
1
Bitte seien Sie genauer darüber, was es tut und wie es OP hilft. Zuerst dachte ich, es könnte sich um eine automatische Montage handeln, aber anscheinend ist dies nicht der Fall, sondern nur, um HTTP-Inhalte als FS anzubieten?! Dies scheint nicht das zu sein, was OP wollte.
Phk