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
-s
einen Symlink erstellen. Andernfalls versuchen Sie, eine feste Verbindung herzustellen, und diese können nur auf demselben Dateisystem hergestellt werden.//10.0.1.103
Und was verwenden Sie, um auf eine andere Maschine zu verweisen, und nicht nur auf ein Unterverzeichnis von/
aufgerufen10.0.1.103
?Antworten:
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
deviceId
und aninode pointer
. DasdeviceId
verweist effektiv auf eine Gerätespezialdatei im/dev
Verzeichnis undinode pointer
auf einen Block auf diesem Gerät.Ihr Netzwerkstandort von
10.0.1.103
hat keinen und kann keinen habendeviceId
(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.quelle
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/where
aus, um das Verzeichnis vom Remotecomputerfoo.example.com
am Speicherort verfügbar zu machen/local/dir
(bei dem es sich um ein vorhandenes Verzeichnis handeln muss), vorausgesetzt, es wird vom Remotecomputer exportiert:Der einfache Weg, auf Remote-Dateien ohne Setup zuzugreifen, ist über SSHFS. Sie müssen lediglich einen SSH-Server auf dem Remotecomputer und das
sshfs
Paket 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/where
vom Remotecomputerfoo.example.com
am Speicherort/local/dir
(der ein vorhandenes Verzeichnis sein muss) über SSHFS verfügbar zu machen :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:
autofs
undsshfs
.Fügen Sie die folgende Zeile hinzu
/etc/auto.master
:Ersetzen Sie die beiden Vorkommen von 1000 durch Ihre Benutzer-ID und Gruppen-ID (führen Sie diese Werte aus
id -u
undid -g
zeigen Sie sie an). Erstellen Sie das Verzeichnis/mnt/sshfs
.Erstellen Sie eine Datei
/etc/auto.sshfs
mit Zeilen wie den folgenden:wo
machinename.example.com
ist der Host - Name (oder IP - Adresse) der Remote - Maschine undmachinename
ist 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
Sie müssen manuell oder automatisch veranlassen, dass
/sharedFolder
von10.0.1.103
an montiert wird/net/10.0.1.103/sharedFolder
.quelle
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.
quelle