2016-05-17 35 views
3

Ich lade gerade Dateien auf einen Unix-Server mit SFTP mit Renci SSH.NET, und es funktioniert gut. Nun möchte ich jedoch Dateien in einen "Symlink-Container" hochladen und dann einen Symlink in einem anderen Verzeichnis erstellen, das auf diese Dateien verweist. Ist das möglich? Ich habe keine Klasse gefunden, um Symlinks zu verwalten. Wie kann das erreicht werden?Renci SSH.NET: So erstellen Sie Symlinks?

Antwort

2

Verwenden Sie die Methode SftpClient.SymbolicLink.

public void SymbolicLink(string path, string linkPath) 

Beachten Sie, dass die Bedeutung der Pfade ein Chaos ist. Der am häufigsten verwendete SFTP-Server, der OpenSSH, ist fehlerhaft und verwendet die Pfade in einer falschen Reihenfolge. Viele andere SFTP-Server folgen dem Fehler für eine Kompatibilität. Aber nicht alles. Sie müssen also testen, welche Reihenfolge von Ihren Servern verwendet wird.

Siehe

+0

Danke Martin, das funktioniert allerdings, wenn ich den Link (nicht das eigentliche Ziel, nur den Link) wieder löschen möchte? SftpClient.Delete löst eine Ausnahme aus ("Failure"). – Erik

+1

Es sollte funktionieren. Veröffentlichen Sie eine neue Frage mit einem vollständigen Code und weiteren Informationen. –

1

Ich habe mit SSH.net gearbeitet und habe nichts über Symlinks gefunden. Wie auch immer, ich habe festgestellt, dass SSH.net benutzerdefinierte Befehle dafür unterstützt, dass Sie den Linux-Befehl schreiben können (ich denke, dass es ln ist), um den Symblink zu erstellen.

In dieser URL Sie ein Beispiel bekommen, wie man mit SSH How to run several commands with SSH.Net?

Vielleicht einen benutzerdefinierten Befehl verwenden, wenn Sie eine Menge Symlinks erstellen müssen, können Sie eine Klasse erstellen können oder Sie den Quellcode herunterladen und hinzufügen eine neue Methode.

Ich hoffe, das kann Ihnen helfen.

+0

Danke, das wirklich nützlich ist, vor allem für Befehle nicht direkt von SSH.NET unterstützt. – Erik