Ich habe einen Ordner auf einer Netzwerkfreigabe, der unter Windows hervorragend funktioniert. Es ist im Grunde ein Index anderer verfügbarer Dateiserver. Es sieht in etwa so aus:
\\server1\directory
Server2.lnk <-(links to \\server2\files)
Server3.lnk <-(links to \\server3\files)
Server4.lnk <-(links to \\server4\files)
Ich versuche, diese Funktionalität in macOS zu replizieren, bin aber auf folgende Probleme gestoßen:
Ich habe mich //server2/files
über Finder
mit verbunden Go -> Connect to Server
. Sobald ich verbunden war Finder
, erstellte ich eine Alias
Verwendung für den //server2/files
Ordner. Das habe ich dann Alias
an den //server1/directory
Ort kopiert. Das Alias
funktioniert ... solange ich denselben Computer verwende, von dem aus ich die Alias
. Aber wenn ich versuche, es von einem anderen Mac zu verwenden, schlägt es fehl.
Der andere Mac scheint die Datei nicht einmal als Alias
Datei zu erkennen. Es hat ein Symbol ähnlich einem terminal
Symbol, und wenn ich darauf doppelklicke, sagt mir der Mac, dass keine Anwendung zum Öffnen der Datei definiert ist. Mir ist aufgefallen, dass die ursprünglich erstellte Alias
Datei keine Erweiterung zu haben scheint, daher bin ich mir nicht sicher, wie ein anderer Mac sie als Datei erkennen soll Alias
.
Das Schöne an einer Windows- .lnk
Datei ist, dass sie zuverlässig und konsistent zu funktionieren scheint, egal von welchem Computer aus auf sie .lnk
zugegriffen wird, während eine Mac- Alias
Datei irgendwie von einer Konfiguration des ursprünglichen Computers abzuhängen scheint, auf dem sie erstellt wurde.
Wenn ich beispielsweise die Alias
Datei in vi
öffne, kann ich im verstümmelten Code sehen, dass sie mindestens den Benutzernamen enthält, der für den Zugriff auf die Freigabe verwendet wird, während ich möchte, dass jeder Benutzer, der auf die klickt, mit seinen Alias
eigenen Anmeldeinformationen auf die Freigabe zugreift (die mac mit AD verbunden ist und Benutzer sich mit ihren AD-Anmeldeinformationen anmelden). Auch dies funktioniert nahtlos mit UNC-Pfaden und .lnk
-Dateien.
Ich habe versucht, ein einfaches Skript zu erstellen, das die Freigaben einbindet. Also //server1/directory
habe ich drinnen eine Datei Server2.command
mit folgendem Inhalt erstellt:
mkdir /Volumes/Server2
mount_smbfs //server2/files /Volumes/Server2
cd /Volumes/Server2
open .
Mein Problem mit dieser Lösung ist, dass ich viele Server und viele Benutzer habe, die denselben Computer verwenden. Eine großartige Sache bei der Verwendung der Connect to Server
Option im Finder ist, dass sie das Verzeichnis scheinbar automatisch "aufräumt" /Volumes
. Nach dem Auswerfen einer Freigabe oder nach dem Beenden einer Sitzung wird der entsprechende /Volumes/Sharename
Ordner entfernt. Ich sehe keine Möglichkeit, dasselbe Verhalten zu erreichen, wenn ich diese terminalbasierte Lösung verwende.
Kann mir jemand eine gute Möglichkeit geben, die .lnk
oben beschriebene Funktionalität zu replizieren?
smb
Ich weiß, dass die Windows-Links über UNC-Pfade funktionieren, während ich in macOS nur über oder Mounts auf diese Netzwerkfreigaben zugreifen kann afp
, aber da ich sehe, dass die Connect to Server
Option ziemlich genau so funktioniert, wie ich es brauche, brauche ich nur eine Möglichkeit, dieselbe Funktionalität zu verwenden , mit der Einschränkung, dass ich es automatisieren muss, da ich meine Benutzer (ich habe viele Benutzer, die denselben Computer verwenden) nicht auffordern werde, jeweils eine manuell zu erstellen Connect to Server
Alias
.
Antwort gefunden. Sie müssen eine .afploc
Datei erstellen. Dies ist vergleichbar mit einer .inetloc
Datei.
Der einfachste Weg, eine Datei zu erstellen .afploc
:
Finder
Go -> Connect to Server
Connect to Server
Fenster ein (zafp://server.domain.com/
afp://server.domain.com
)server.domain.com.afploc
sollte automatisch auf Ihrem Desktop erstellt werdenGo -> Connect to Server
Prozess automatisch auf jedem Mac-Computer zu starten.afploc
Dateien zu erstellen, die auf andere Server oder Pfade verweisensmb://
Pfad ersetzen. Dadurch wird eine .inetloc
Datei erstellt, die auf die gleiche Weise funktioniertsmb://server/share
durch smb://user:password@server/share
.Um Daniels Antwort zu ergänzen , ist es vielleicht erwähnenswert, dass diese .afploc- oder .inetloc-Dateien nur einfache XML-Plist-Dateien sind. Sie könnten sie also auch von Hand oder aus einem Skript generieren. Eine Beispieldatei für eine SMB-Freigabe sieht so aus:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>URL</key>
<string>smb://server/share</string>
</dict>
</plist>
Wenn Sie also viele solcher Verknüpfungen definieren müssen, könnten Sie eine Datei wie diese haben:
$ cat shares.txt
server1 share1
server2 share2
server3 other-share
Führen Sie dann dies aus, um .inetloc-Dateien für jede Serverfreigabe zu generieren:
cat shares.txt | while read server share; do
cat <<'EOF' >"$server-$share.inetloc"
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>URL</key>
<string>smb://$server/$share</string>
</dict>
</plist>
EOF
done
Mein Gefühl darüber, was Sie in Mac OS (oder einem Unix) erreichen möchten, funktioniert mit einem symbolischen Link. Finder verfügt über Funktionen, die über den eingebetteten Funktionen des Betriebssystems liegen. Ich denke, ein Alias funktioniert nicht mit Terminal / Shell. Symbolische Links werden auf der Shell erstellt, funktionieren aber auch transparent im Finder. Probieren Sie den Thread Backup iPhone to external drive on Mac aus ... das erklärt symbolische Links wunderbar.
Hoffe, das war, wonach Sie gesucht haben!
tubedogg
Daniel
smb
oderafp
Freigabe erstellen kann. Ich konnte nur einen symbolischen Link zu einem Einhängepunkt auf dem Computer erstellen, was mein Problem nicht wirklich löst. Ich brauche grundsätzlich eine "mount-on-demand"-Lösung, die auch eine "unmount-on-demand"-Funktion beinhaltet. Alle Funktionen, die ich benötige, sind bereits in Finder enthaltenConnect to Server
. Ich brauche im Grunde eine Möglichkeit, diese Funktionalität von der Befehlszeile aus aufzurufen oder auf andere Weise zu replizieren.