BLog

ImprintImpressum
PrivacyDatenschutz
DisclaimerHaftung
Downloads 

FTP-Filesystem in Userspace für Mac OS X

In verschiedenen Inkarnationen ist das Filesystem in Userspace - FUSE seit Anfang 2007 auch für Mac OS X verfügbar. Die aktuelle Variante ist OSXFUSE - FUSE for OS X. In vielen Bereichen ist immer noch das File Transfer Protocol - FTP aus dem IT-Steinzeitalter im Betrieb, z.B. werden bei unzähligen Web-Hostern noch unzähligere Web-Sites durch die jeweiligen Web-Seiten-Betreiber (Web-Admins) mittels FTP mit Inhalten versorgt und in Stand gehalten. Jedenfalls benötigt der betreffende Web-Admin ausser seines FTP-Zugangs noch einen FTP-Client, um damit auf die vom FTP-Server bereitgestellten Datei-Verzeichnisse zugreifen zu können.

Mac OS X kommt von Haus aus mit einem im Finder integrierten FTP-Client. Damit kann man ein entferntes FTP-Verzeichnis als Volume im Finder einklinken (mounten), und man kann dieses dann ganz normal durchstöbern, so als ob es sich um eine lokale Festplatte handelte. Allerdings hat man damit keinen Schreibzugriff, d.h. man kann sich zwar die vorhandenen Daten anschauen, aber nichts ändern, und somit verbleibt der eingebaute FTP-Client für den o.g. Zweck nur von sehr eingeschränktem Nutzen. Es gibt für fast jeden Geschmack eine Reihe von dedizierten FTP-Clients (z.B. im Mac App Store), die auch einen FTP-Schreibzugriff auf entfernte Verzeichnisse erlauben.

Nach meinem Geschmack wäre es dennoch wünschenswert, wenn man auf seine FTP-Verzeichnisse direkt vom Finder aus lesend- und schreibend Zugriff hätte. Nun es gibt CurlFtpFS - A FTP filesystem based on cURL and FUSE, und im Zusammenspiel mit dem o.g. OSXFUSE sollte sich der Wunsch ohne weiteres erfüllen lassen. Es geht auch im Prinzip, nur befindet sich in der aktuellen (6 Jahre alten) Version curlftpfs-0.9.2 ein Bug, der das Hochladen von Dateien auf den FTP-Server von einem FreeBSD- oder Mac-OS-X-Client aus mit einem Fehler abbricht. Damit bleibt man also genauso naß wie mit dem im Finder eingebauten FTP-Client, arrrrgh…

Bei Google-Code gibt es die 7 Jahre alte Version curlftpfs-0.9.1, und diese funktioniert unter Mac OS X 10.9.5 in Zusammenarbeit mit einem aktuellen OSXFUSE so wie gewünscht, nämlich man kann tatsächlich ein entferntes FTP-Verzeichnis im Finder einklinken und dessen Inhalt beliebig manipulieren.

Speziell für Mac OS X - ftpfs-0.9.3 (Halloween 2014)

Der wesentliche Unterschied zwischen v0.9.1 und v0.9.2 ist ein von einem zweiten Autor neu implementiertes Thread-basiertes System zum File-Upload. Im Grunde handelt es sich dabei um ein einfaches Producer-Consumer Problem, das im vorliegenden Fall mit Hilfe von Semaphoren umgesetzt wurde. Auffällig ist, daß 4 Semaphoren anstelle der üblichen 2 Semaphoren zwecks Thread-Koordinierung zum Einsatz kommen, und schon ohne eine nähere Analyse darf man erhebliche Zweifel anmelden, ob so ein System mit unabhängigen 4 Semaphoren überhaupt jemals rund, also ohne Race Conditions und Deadlocks, laufen kann. Unter Mac OS X und FreeBSD läuft es offenbar nicht, unter Linux sind womöglich die Semaphoren intelligenter, wer weiß?

Jedenfalls vermochte ich auch nicht zu erkennen, welchen Vorteil diese neue File-Upload-Methode hätte bieten können, wenn sie denn funktionieren täte, und so habe ich von einem Debugging des neuen Systems abgesehen und bin einfach beim ursprünglichen buffered Upload-System von Robson Braga Araujo geblieben, das einwandfrei funktioniert.

Beide curlftpfs-Pakete kommen mit dem kompletten GNU-Build-System-Gewürge daher, um die übersichtliche Anzahl von 5 C-Quelldateien zu übersetzen und mit 5 Bibliotheken zu verlinken. Das ist ein typisches Beispiel von „mit Kanonen auf Spatzen schießen“. Ich habe diesen ganzen nutzlosen Krempel entfernt, alle Abhängigkeiten zu libglib-2 beseitigt, den Namen auf das wesentliche gekürzt und aus dem irreduziblen Rest ein schönes Xcode-Projekt gemacht:

Das Xcode-Projekt stelle ich hier zum Download bereit:

    ftpfs-0.9.3.zip
    SHA256 = 428aa7c75518ea63555017b19b9e361f238cb15d63cd5818da853025a81f93f1

Man installiere OSXFUSE, erzeuge einen Archive-Build in dem gezeigten Projekt, kopiere das produzierte ftpfs-Binary nach ~/bin/ftpfs und gebe im Terminal das folgende Kommando ein:

~/bin/ftpfs -o user=<username>:<password>,volname=<volumename>,defer_permissions,noappledouble <ftp-server-domainname>/ /Volumes/<volumename>​

Die in blau gezeigten Parameter müssen natürlich durch die tatsächlichen Daten, also Name, Paßwort, Domain-Adresse (ohne ftp-Schema) und Volume-Name ersetzt werden - alles ohne <>. Diese Version von ftpfs erzeugt den Mount-Point sofern nicht bereits vorhanden automatisch (im obigen Beispiel /Volumes/<volumename>). Unter Mac OS X ist es üblich, daß der Name des Mount-Points den Volume-Namen trägt, daher ist <volumename> an beiden Stellen im oben gezeigten Kommando identisch - wer will kann jedoch davon abweichen.

Keywords: FTP-Client, Mac-OS-X

Copyright © Dr. Rolf Jansen - 2014-10-31 22:25:16

PROMOTION