004

Rückblick #2020,193

2020 04 27 09 27 59

Organisierter Kabelsalat.

2020 05 07 12 52 57

Mittagspause in den Weinbergen.

2020 05 18 08 09 09

Zuckerbombe als Nachtisch.

2020 05 19 11 14 59

Sprung in die Tiefe?

2020 06 05 17 26 36

Tolles Buch. Sehr interessant und informativ. Und ja, die „Toten Hosen“ sind keine Punk-Band. Sehe ich auch so. Eher so ne Bierzelt-Schunkel-Kapelle. Und krass, dass die beiden Typen von DAF solche Arschlöcher waren. Scheinbar.

2020 06 05 21 27 38

Ein absolut leckeres Bier. Fruchtig-süffig. Perfekt für den Sommer.

2020 06 06 10 56 50

Newtonmore wäre mir zwar lieber … aber Hey! Wir haben Klopapier. Noch dazu witziges Klopapier … Geschmacksache eben.

2020 06 07 10 18 47

Na klar! Selbst hinter der Maske.

2020 06 09 18 37 01

Lieblings-Zupfinstrument.

2020 06 11 15 55 07

Lecker Mokka. Für’s senkrecht im Bett schlafen…

2020 06 11 18 17 19

Klar, ein Zug ist laut, wenn er vorbei rauscht. Was ist aber mit der Dauerbeschallung durch Autos, LKWs und Motorräder? Ich bin für eine Tunnelpflicht selbiger.

2020 06 16 16 11 02

So schmeckt der Sommer.

2020 06 17 15 19 00

Mokka-Bausatz für zu Hause.

2020 06 25 19 47 12

Kauderwelsch.

2020 06 28 09 48 17

Eins wurde es noch. Und das hat auch nicht gehalten. Der Kleber war wohl zu alt.

2020 07 03 05 57 01 1

Paasche hatte oft den Durchblick.

„Und er hüte sich vor Überhebung. Die Vögel sind die natürlichen Vertilger derjeniger Insekten, die wir heute, dank den Erfolgen der wissenschaftlichen Forschung, als Überträger vieler Krankheitserreger kennen und bekämpfen.
Wohl ist es dem Menschen in seine Hand gegeben, das, was seinem Geschoß Ziel bietet oder in seine Schlingen tritt, völlig zu vernichten.
Macht er jedoch in Verblendung oder Leichtsinn davon Gebrauch, dann kommen die kleinen und kleinsten Lebewesen und fressen ihn auf.
Wer weiß, ob es dem menschlichen Scharfsinn von kommenden Jahrtausenden je gelingen wird, die Schutzwehren wieder aufzubauen, die durch den Tod der heute geopferten Tierarten niedergerissen werden.“
[?]
Hans Paasche, März 1914

2020 07 04 10 15 20

Tja …

2020 07 08 13 11 43

Ein echt schickes Autole.

2020 07 09 12 43 47

Zum Träumen. Leckere Gnocci (mit Käsefüllung) beim Lieblingsitasliener in Beilstein: Da Carlo.

Kabale 1600

Ich habe dem Dadanaut-Album Kabale einen neuen Klang-Charakter verpasst…

Introspektion 1600

…und der Introspektion ebenso.

Ordner und Dateien automatisch online synchronisieren

Ordner und Dateien automatisch online synchronisieren…

…in einer Apple-Umgebung.

Wenn es darum geht, viele Dateien mit sich ständig aktualisierenden Inhalten, im Internet zum herunter laden anzubieten, sollte das automatisch und möglichst im Hintergrund ablaufen. Das heisst: sobald eine entsprechende Datei geändert/hinzugefügt/gelöscht wird, sollte das Hochladen/Synchronisieren automatisch erfolgen. Gleiches Spiel bei Ordnern (Verzeichnissen).

Wie kann man also Ordner und Dateien automatisch online synchronisieren? Und das automatisch, sobald eine Datei geändert oder neu zu einem Verzeichnis hinzugefügt wird?

Händisch ist das sehr aufwendig und Zeit raubend.

Nach einigen Tests mit CaptainFTP und dem zusätzlichen Programm CrowzNest (überwacht Ordner und lädt im Hintergrund mit CaptainFTP die Dateien auf den FTP-Server); Mac OS X Ordnerüberwachung mit gekoppeltem AppleScript, Automator, usw. …

…bin ich bei folgender Lösung gelandet. Alles andere funktionierte nie so, dass es nicht dauernd kontrolliert und neu gestartet werden musste. Also sehr unzuverlässig.

[CaptainFTP und seine Kompagnons gibt es mittlerweile (2022) schon gar nicht mehr.]

Was passiert während des Arbeitsablaufs (Workflow)? Hier ein kurzer Überblick:

  • per Launchd-Services wird der entsprechende Ordner und/oder die Datei überwacht
  • ein AppleScript wird bei Änderungen des Ordners oder der Datei gestartet
  • Transmit lädt die Dateien auf den FTP-Server hoch
  • im Kundenbereich organisiert ein Skript die Darstellung (Auflistung) und das Herunterladen der Dateien

Wie prüft man mit den Launchd-Services Ordner und Dateien auf Änderungen?

Das funktionierte für mich am besten mit dem Programm LaunchControl (eigentlich kostenpflichtig; funktioniert aber erstmal auch ohne zu bezahlen). Es gibt noch Lingon. Das hat leider nicht so gute Einstellungsmöglichkeiten per grafischer Oberfläche, und funktioniert auch nicht so zuverlässig. Jedenfalls in der Umgebung in der der Arbeitsablauf eingerichtet werden musste.

Man kann die Datei natürlich auch von Hand anlegen/bearbeiten. Wer es möchte … mir war der Weg mit benutzerfreundlicher Klickoberfläche lieber.

Über LaunchControl habe ich dann Launchd-Jobs angelegt, die die entsprechenden Verzeichnisse oder eine einzelne Datei auf Änderungen prüft. Sobald eine Datei geändert, hinzugefügt oder auch nur das Verzeichnis geöffnet wird, startet die Synchronisierung.

Über Watch paths kann man Verzeichnisse und Dateien überwachen. Eine Überwachung am besten wie im unteren Bildschirmfoto gezeigt zusammen stellen. Allerdings hatte ich nach einigen Tests festgestellt, dass es durchaus auf einem anderen System leicht anders aussehen kann.

Unter Mac OS X Snow Leopard und auch El Capitan lief und läuft (2022) es immer noch wie unten gezeigt am besten und eben zuverlässigsten.

Bildschirmfoto 2022 02 11 um 11.56.09

Ganz Wichtig!
Bei Program to run nicht auf die .app verlinken. Den Paketinhalt anzeigen lassen und auf das Applet darin verlinken. Das AppleScript kann hieraus nicht direkt gestartet werden.


Die Konfiguration mit Lingon sieht ähnlich aus

Bildschirmfoto 2022 02 11 um 09.54.54
Bildschirmfoto 2022 02 11 um 09.55.06

Die Synchronisierung

Über die Launchd-Services wird jeweils ein AppleScript gestartet, welches Transmit (FTP-Client) mit der Synchronisation der Dateien auf dem Server beauftragt. Es werden auch nur die Dateien hochgeladen, die verändert wurden. Das funktioniert mit Transmit ganz hervorragend.

Transmit benutze ich auch, wenn es darum geht, diverse Skripte im Internet zu aktualisieren. Der Abgleich, was alt aufm Server ist, und gegen lokale Dateien ausgetauscht werden muss, funktioniert wirklich wunderbar. Ist zum Beispiel bestens dazu geeignet, CMS-Skripte aktuell zu halten, die keine integrierte Aktualisierungs-Option eingebaut haben.

sync

Das AppleScript

Die ursprüngliche Version hab ich mir hier besorgt. Das funktioniert so schon richtig gut. Auch als Ordneraktion.

Für meinen Fall musste ich es aber nocht etwas anpassen;

  • das Skript soll prüfen, ob ein gewisses Server-Volume schon vorhanden (auf dem Schreibtisch angemeldet) ist
  • wenn nicht: das Volume holen, etwas warten und das Skript neu starten
Bildschirmfoto 2022 02 11 um 12.24.15

Mein AppleScript-Wissen war/ist leider etwas eingerostet. Ich weiss nicht, ob man es mit den eingebauten Schleifen nicht noch etwas optimieren kann. Wer mag kann das. Freu mich über Tipps und/oder eine neue Version des Skriptes. Ansonsten kann jeder das vorhandene Skript benutzen/erweitern/verbreiten wie er grad Lust und Zeit hat.

Sofern das unter der GNU General Public Lizenz erfolgt.

Oder eben die Einstellungen (sind im Skript markiert) anpassen und selbst verwenden.

Hier kann man es herunter laden (die neue Version 1.1 ist seit dem 2. Februar 2016 online; neu ist eine zusätzliche Schleife, die verhindert, dass das Server-Volume zu oft geholt wird).

Vielleicht hilft es ja bei der einen oder anderen Problemlösung.

Manchmal kommt es zu Problemen (wofür ich keine Problemlösung im Skript habe):

  • wenn das Volume sich nicht einhängen (anmelden) lässt und eine zu lange Schleife entsteht (ich denke, das habe ich mit der Version 1.1 behoben)
  • die Verbindung zu einem FTP-Server nicht funktioniert

Aber meistens (in 97% der Fälle) läuft es zuverlässig. Bei den oben genannten Problemen hilft etwas Geduld. Die Skripte beenden, Transmit ebenso. Etwas warten, denn der Prozess läuft ja im Hintergrund, und sollte bald erneut starten. Auf jeden Fall zu dem Moment, sobald etwas in den angegebenen Pfaden verändert wird.


Dieses Skript und Ideen zu den LaunchdJobs werden in der Hoffnung zur Verfügung gestellt, dass es hilfreich und nützlich sein kann. Ohne Garantie. Also am besten nicht gleich in laufende Arbeitsabläufe integrieren. Besser in einer Testumgebung.


-- AppleScript - Transmit - synchronize a local directory to an FTP directory
-- Copyright (C) 2010 Lincoln Mullen / (C) 2022 Marco Dinkel
-- Released under the GPL. See README.

doit(true)
on doit(theTransmit)
	if theTransmit then
		
		tell application "System Events" to set diskNames to name of every disk
		
		if "daten" is in diskNames then
			
			-- display dialog "Startbereit!"
			
			tell application "Transmit"
				-- Prevent interactive alerts from popping up during script execution
				set SuppressAppleScriptAlerts to true
				
				-- CONFIGURATION - edit what you need to below
				-- replace "LincolnMullen" with the name of your favorite
				set remoteFavorite to item 1 of (favorites whose name is "Upload-Lesezeichen")
				-- replace everything in between "" to the remote path you want to sync TO
				set remotePath to "/wp-content/uploads/"
				-- replace everything in between "" to the local path you want to sync FROM
				set localPath to "/Users/admin/Documents/"
				-- END CONFIGURATION
				
				-- set a variable naming all the skip rules that are enabled in Transmit preferences
				set myRules to (skip rules whose enabled is true)
				
				-- Create a new window (and thus a single tab) for this script
				tell current tab of (make new document at end)
					
					-- Go into the local and remote folders that we want to sync.
					change location of local browser to path localPath
					connect to remoteFavorite
					change location of remote browser to path remotePath
					
					-- Run a sync from the current local folder to the current remote folder
					synchronize local browser to remote browser using skip rules myRules with automatically determine time offset
					-- Close the current window
					close
				end tell
			end tell
			
		else
			
			-- es muss erst die Windows-Platte geholt werden
			-- wenn sie nicht schon da ist und nicht mehrfach geholt werden soll
			-- mount volume "afp://NAS01._afpovertcp._tcp.local/windows_daten"
			mount volume "smb://file-srv/daten"
			
			-- Sicherheitspuffer: bis die Platte auf dem Schreibtisch erscheint
			delay 30
			
			-- Neustart des Skriptes
			doit(theTransmit)
			
		end if
		
	else
		
		-- Beenden
		doit(false)
		
	end if
	
end doit

Das ist nur ein Weg, wie man Ordner und Dateien automatisch online synchronisieren kann…

…es gibt noch einige weitere Möglichkeiten: mit GoodSync kann man sich z. B. auch recht schnell einen stabilen Workflow zusammen klicken, der lokale Verzeichnisse mit so allerhand Online-Verzeichnissen und Wolken synchronisiert…


Der Beitrag und das AppleScript wurden am Freitag, 11. Februar 2022 aktualisiert.

Und der Workflow funktionieret unter macOS Catalina und Transmit in der Version 5 weiterhin tadellos.