Voor wie met een Mac werkt en geen Terminal-fobie heeft, is het al sinds Mac OS X 10.2 mogelijk om netwerkverbindingen naar bijvoorbeeld FTP- of WebDAV-servers te mounten.
In praktijk betekent dat dat je aan een bepaalde directory een verbinding kan koppelen. Open je de directory, dan zie je (live, real time, hoe je het ook noemen wilt) de bestanden en directories op de server. Mooi, man!
In theorie mooi, in praktijk waardeloos
Groot voordeel: je kunt, omdat dat mounten diep in de UNIX-onderlaag van MacOS X gebeurt, in ieder programma van die mount gebruikmaken. Foto's op een WebDAV-server direct in Photoshop openen? Kan. Een file op een FTP-server in om het even welke tekst-editor bewerken, zelfs als die zelf helemaal geen FTP ondersteunt? Geen probleem.
Wél een probleem: zo'n gemounte FTP-server is helaas altijd read-only; je kunt wel lezen, maar niet schrijven. Je kunt een script of pagina dus wel bewerken (in om het even welke teksteditor), maar je kunt je wijzigingen niet opslaan. Oeps.
FUSE
Linux-gebruikers hebben een luxere positie: die kunnen met FUSE (Filesystem in USErspace) allerlei bestandssystemen wel zodanig mounten dat er op geschreven kan worden. Heel interessant voor web developers die direct op een server willen werken: die mount je gewoon ergens, en vervolgens ga je in scripts zitten hakken alsof ze op je eigen harde schijf staan.
Mooi! Probleem opgelost!
Jammergenoeg was FUSE alleen beschikbaar onder Linux...
Was, want Amit Singh -- een ontwikkelaar van Google -- heeft tot mijn übergrote vreugde FUSE naar MacOS X geport -- zijn eigen post staat hier. En aangezien FUSE een soort van plugin-architectuur is, waar iedereen nieuwe filesystems voor kan verzinnen, zijn er al een paar hele nuttige -- en soms ronduit bizarre -- voorhanden.
Goed, vanuit Photoshop direct foto's op een server bewerken is leuk, maar als je nou eens direct de foto's in je Flickr-stream kan bewerken? Of een post op je WordPress-blog kunt zetten door een tekstbestandje ergens neer te zetten? De sky, dat begrijpt u nu wel, is de limit.
Hoe doen we dat dan?
Allereerst moet je natuurlijk MacFuse ophalen. Dat kan hier -- aan de Installer Disk Image heb je wel genoeg. Als je die hebt geïnstalleerd, lijkt er niet veel gebeurd te zijn, geen nieuwe programma's enzo. Dat komt omdat je FUSE vanaf de command-line, dus in Terminal, moet gebruiken. Dat gaat als volgt: (ervan uitgaande dat je terminal nu open hebt)
$ export PATH=/usr/local/bin:$PATH $ mkdir test $ sshfs noe@localhost: test -oping_diskarb,volname=Noe Password: $ ls test/ Desktop Library Music Public Documents Movies Pictures Sites
Goed, wat gebeurde hier nou allemaal? Laten we het eens stap voor stap doorlopen:
$ export PATH=/usr/local/bin:$PATH
Hier voeg ik het pad /usr/local/bin
toe aan mijn PATH. Hier kom ik straks nog op terug.
$ mkdir test
Ik maak een directory aan die ik straks als mount point ga gebruiken. Uiteraard hoef je dat niet te doen als je al een (lege!) directory voor dat doel hebt.
$ sshfs noe@localhost: test -oping_diskarb,volname=Noe
Dit is de belangrijkste regel, eigenlijk. Hier roep ik sshfs
aan om een beveiligde verbinding te maken naar localhost
(mijn eigen computer dus -- testen doe je altijd lokaal!), met gebruikersnaam noe
. De resulterende verbinding wil ik mounten op test
, en de netwerkschijf wil ik laten verschijnen onder de naam Noe
.
$ ls test/
Altijd even controleren natuurlijk... En ja hoor, ik krijg keurig netjes de inhoud van de home directory van Noë te zien. Bovendien zul je in de Finder een nieuwe schijf zien met de naam Noe. Als we klaar zijn met zijn bestanden, kunnen we de netwerkschijf net als elke willekeurige schijf naar de prullenbak trekken, en we zijn er weer vanaf.
Missie geslaagd!
En dat $PATH-verhaal dan?
Oh ja, daar zou ik nog op terugkomen.
Het punt is namelijk dat sshfs
wat bestanden in die directory nodig heeft. En om nou te voorkomen dat je iedere keer diezelfde regel moet intypen voordat je de verbinding kunt maken, gaan we dat automatisch laten doen als de computer opstart:
$ echo export PATH=/usr/local/bin:$PATH >> ~/.profile
Klaar. Elke volgende terminal die je open trekt, heeft dat PATH keurig aangevuld.
Volgende stap wordt dan natuurlijk het volledig automagisch laten mounten van de server. Dat doe je door de betreffende mount in je fstab
op te nemen; aangezien dat een beetje verder voert dan ik dit verhaal wil laten gaan, en omdat de mogelijkheden voor missers groter zijn, laat ik dat even aan jezelf over.
Verdere opties
Je zag in die opdrachtregel aan het eind al een voorbeeld van wat opties staan. Je kunt namelijk bij het verbinden wat extra informatie opgeven, en in sommige gevallen is dat heel nuttig. Voor een volledig overzicht verwijs ik je naar sshfs -h
, maar een paar die ikzelf gebruik wil ik je niet onthouden:
ping_diskarb
: geef de Finder een seintje (iets specifieker, de Disk Arbitrator) dat er een nieuwe schijf isvolname=XXX
: altijd handig om de mount ook een naam te geven, anders komt-ie als "Fuse Volume n" tevoorschijn (n is dan een oplopend nummer).idmap=user
: eigenlijk de belangrijkste van het stel. Dit zorgt ervoor dat de bestanden van Noë (in mijn voorbeeld, dat is) worden gezien als bestanden van mij. Als dat niet zo zou zijn, zou ik er wellicht alsnog niet in kunnen schrijven, en dat was nou net de bedoeling...
Zoals ik al zei, met sshfs -h
krijg je nog veel meer te zien. Bij voorkeur lokaal testen op een nieuwe account, zodat ALS je iets verneukt, dat niet al te verstrekkende gevolgen heeft.
Wijze woorden ter afsluiting
Amit heeft de Mac-gebruikers een fantastische mogelijkheid gegeven op netwerkgebied, en Google is zo vriendelijk geweest om dat allemaal gratis ende voor niets aan te laten bieden. Er valt nog genoeg aan te sleutelen: de documentatie is nog wat summier, en voor mensen die niet zo thuis zijn in een UNIX-shell is het ook niet allemaal even voor de hand liggend. Bovendien is het MIJ nog niet gelukt om FTPfs aan de gang te krijgen, dus kan ik alleen verbinding maken met SFTP-servers. Voor mij is dat nu even genoeg, maar FTP zou zeker een hele graag-geziene toevoeging zijn.
Ik heb er alle vertrouwen in dat dat wel goed gaat komen.
Veel succes met het spelen ermee! Tips, trucks en scheldkannonades kunt u zoals altijd in het reactiedinges kwijt.